douxueke5653 2013-02-24 04:37
浏览 22
已采纳

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

I'm trying to use the default event listener in Laravel for errors (i.e. 404).

I have the following code:

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

This works fine (it calls the error controller's 404 action) if the URL doesn't exist (i.e. doesn't hit a controller). But when the path hits a controller, then it seems to ignore that event listener.

Do I need to do something to tell it to use that listener?

  • 写回答

1条回答 默认 最新

  • dongxiandi8313 2013-02-24 12:54
    关注

    If you are using a catch-all route - like:

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

    Then you are correct - the event does not seem to be captured by the Events class. It might be a bug - I'm not sure.

    However for 404 it is a really easy fix - just change your base_controller:

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

    to

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

    and it works as expected

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果