Need assistance with Kohana 3 and catch all route turning into a 404 errorここでの回答として、Kohanaがスローしたエラーをキャッチして、かなりのエラーページを表示し、正しいHTTPコードを送信しようとしています。実行中のKohana_Request_Exceptionをキャッチ中 - 予期しない動作
は、ここで問題を実証するための簡易版です。
try {
// Instantiate your Request object
$request = Request::instance();
// The give it a try, to see if its a valid request
$request->execute();
}
catch (Kohana_Request_Exception $e) {
header('Content-Type: text/html; charset='.Kohana::$charset, TRUE, 404);
echo Request::factory('err/404')->send_headers()->execute()->response;
exit;
}
echo $request->send_headers()->response;
だから私は、このようなhttp://example.local/moo/など存在しないURLに移動し、私はここで、以下の応答
Kohana_Request_Exception [ 0 ]: Unable to find a route to match the URI: moo
を得るhappening-何です - リクエストが試行されていますが、Kohana_Request_Exceptionで失敗しました。がキャッチされています。ですが、新しいリクエストオブジェクトを作成しようとすると、Request::factory('err/404')
そのリクエストはエラーfをスローしますROMの私の最初の要求....!? wtf ??
私は良い一時間それを手抜きして、私が始めたときに困惑しています。工場からの新しい要求は、古い要求の知識を持っていないはずですか?なぜ私は本質的にd00dの答えからそれをコピーしたときにこのコードが誤動作していますか?
// Release version and codename
const VERSION = '3.0.7';
const CODENAME = 'hattrick';
誰かが正しい方向に私を指しています。
'header()'を直接呼び出さないでください。これは 'Request :: send_headers()'によって上書きされます。代わりに 'Request-> headers []'と 'Request-> status'を使用してください。 – shadowhand