0

我正在尝试使用 Laravel 中的默认事件侦听器来检测错误(即 404)。

我有以下代码:

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

如果 URL 不存在(即没有击中控制器),这可以正常工作(它调用错误控制器的 404 操作)。但是当路径到达控制器时,它似乎会忽略该事件侦听器。

我需要做些什么来告诉它使用那个监听器吗?

4

1 回答 1

1

如果您使用的是包罗万象的路线 - 例如:

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

那么你是对的 - 事件似乎没有被事件类捕获。这可能是一个错误 - 我不确定。

但是对于 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 回答