【问题标题】:Event Handler not receiving event Laravel事件处理程序未收到事件 Laravel
【发布时间】:2017-10-15 04:29:19
【问题描述】:

我正在使用 L5.4 开发通知系统。我创建了事件和侦听器。我确实有触发此事件的测试路线。事件已成功触发,我什至可以在刀片视图中使用 Pusher 接收它。

但由于某种原因,我必须在 listenerhandle(NewUser $event) 方法内停止。我试过dd($event) 但它永远不会停在那里。虽然我已经在我的EventServiceProvider 中注册了事件和侦听器映射与listen 属性

//App/Providers/EventServiceProvider.php
 protected $listen = [
        'App\Events\NewUser' => [
            'App\Listeners\NewUserAdminNotification',
        ],
    ];

实际上,我想将notification 存储在我的数据库中的handle 侦听器方法中。但它永远不会进入那个方法。

任何指向问题的指针都非常感谢。

【问题讨论】:

  • 你能发布监听器代码以及你是如何触发和测试它的吗?
  • @Sandeesh,感谢您的回复。请参阅我对 Jono 答案的评论。正如我已经提到的,事件触发没问题,但只是处理程序不起作用

标签: laravel events notifications listener laravel-5.4


【解决方案1】:

更改事件和侦听器类的符号对我有用。

//App/Providers/EventServiceProvider.php

 protected $listen = [
        \App\Events\NewUser::class => [
            \App\Listeners\NewUserAdminNotification::class,
        ],
    ];

【讨论】:

    【解决方案2】:

    有时您需要清除已编译的类以让 Laravel 注册新事件。

    在控制台/终端运行:

    composer dump-autoload

    php artisan clear-compiled

    【讨论】:

    • 感谢您的回复。我只是尝试在EventServiceProvider 中为listen 数组\App\Events\NewUser::class 中的事件和侦听器使用不同的表示法,而不是字符串表示法,它起作用了。我不知道为什么,因为即使是 laravel 文档也提到了字符串表示法。
    • 其次,正如您建议的使用 dump-autoload 清除已编译的类。是的,有时这有效。我认为laravel在我们运行artisan make命令后会自动执行这个命令。
    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 2018-01-25
    相关资源
    最近更新 更多