我正在尝试在Laravel中使用默认事件监听器来处理错误(即404)。
我有以下代码:
Event::listen('404', function()
{
return Controller::call('errors@404');
});
如果URL不存在(即没有命中控制器),这可以正常工作(它调用错误控制器的404动作)。但是当路径命中控制器时,它似乎忽略了该事件监听器。
我是否需要做一些事情来告诉它使用该听众?
答案 0 :(得分: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');
}
并且按预期工作