Laravel 3 - 404事件监听器未从控制器中拾取

时间:2013-02-24 04:37:05

标签: php laravel laravel-3

我正在尝试在Laravel中使用默认事件监听器来处理错误(即404)。

我有以下代码:

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

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

我是否需要做一些事情来告诉它使用该听众?

1 个答案:

答案 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');
}

并且按预期工作