我正在尝试使用 Laravel 中的默认事件侦听器来检测错误(即 404)。
我有以下代码:
Event::listen('404', function()
{
return Controller::call('errors@404');
});
如果 URL 不存在(即没有击中控制器),这可以正常工作(它调用错误控制器的 404 操作)。但是当路径到达控制器时,它似乎会忽略该事件侦听器。
我需要做些什么来告诉它使用那个监听器吗?
如果您使用的是包罗万象的路线 - 例如:
Route::controller(Controller::detect())
那么你是对的 - 事件似乎没有被事件类捕获。这可能是一个错误 - 我不确定。
但是对于 404,这是一个非常简单的修复 - 只需更改您的 base_controller:
public function __call($method, $parameters)
{
return Response::error('404');
}
到
public function __call($method, $parameters)
{
Event::fire('404');
}
它按预期工作