0

エラー (つまり 404) に対して Laravel のデフォルトのイベント リスナーを使用しようとしています。

次のコードがあります。

Event::listen('404', function()
{
    return Controller::call('errors@404');
});

URL が存在しない場合 (つまり、コントローラーにヒットしない場合)、これは正常に機能します (エラー コントローラーの 404 アクションを呼び出します)。しかし、パスがコントローラーに到達すると、そのイベント リスナーは無視されるようです。

そのリスナーを使用するように指示するために何かをする必要がありますか?

4

1 に答える 1

1

キャッチオールルートを使用している場合-次のように:

Route::controller(Controller::detect())

その通りです。イベントは Events クラスによってキャプチャされていないようです。バグかもしれません - よくわかりません。

ただし、404 の場合は非常に簡単に修正できます。base_controller を変更するだけです。

public function __call($method, $parameters)
{
    return Response::error('404');
}

public function __call($method, $parameters)
{
    Event::fire('404');
}

そしてそれは期待どおりに動作します

于 2013-02-24T12:54:52.153 に答える