0

Bootstrap.php で、Profiler を非アクティブ化しました (または、アクティブ化したほうがよいでしょうか?)、およびエラー。

誰かが /notexist などの URL を呼び出していて、action_notexist() がない場合、サイトは空白です。

私の質問: ホワイト ページの代わりにロードするメインのエラー テンプレートを作成するにはどうすればよいですか。たとえば、 http://twitter.com/notexistinguserに電話すると、「ページが存在しません」というエラーが発生します。Kohana3 と同じですか?

ありがとう :)

4

3 に答える 3

2

例外を無視しないでください、それらをキャッチしてください。

于 2010-07-11T19:42:33.477 に答える
1

コハナは初めてですが、以下のテクニックを使います。まず、IN_PRODUCTIONなどの定数を定義します。

define('IN_PRODUCTION', true);

次に、 Kohana_Exceptionを継承するException_404などの新しいExceptionクラスを作成します。第三に、このコードを置き換えます。

echo Request::instance()
->execute()
->send_headers()
->response;

次のように:

$request = Request::instance();
try 
{
    $request->execute();
}
catch(Exception_404 $e)
{
    if ( ! IN_PRODUCTION)
    {
        throw $e;
    }

    //404 Not Found
    $request->status = 404;
    $request->response = View::factory('404');
}

print $request->send_headers()->response;

これで、独自のエラーテンプレートができました。それはあなたが望むものですか?

于 2010-07-15T10:54:45.940 に答える
1

必要なことは、bootstrap.phpファイルでKohana_Exceptionをキャッチすることです。これは、私のプロジェクトの 1 つからのコード サンプルです。

try
{
    echo Request::instance()
        ->execute()
        ->send_headers()
        ->response;
}
catch (Kohana_Exception $e)
{
    echo Request::factory('static/404')->execute()->send_headers()->response;
}

ここで何が起こっているのかを説明します。要求された URL のルートが存在しない場合、Request_Exception (Kohana_Exception のインスタンス) がスローされます。

次に、HMVC 機能を使用して、テンプレート、ステータス コード、ログ、エラー メッセージを処理する 404 ページへのサブリクエストを作成します。

将来、コハナは応答を処理する特別な例外を設ける可能性がありますが、今のところ、私のソリューションを使用できます。

お役に立てば幸いです。

于 2010-07-13T01:21:03.660 に答える