【问题标题】:laravel model $events not getting triggeredlaravel 模型 $events 没有被触发
【发布时间】:2017-09-23 04:39:17
【问题描述】:

我正在创建一个新应用程序,创建文章时将在该应用程序上显示通知。我尝试过使用事件和监听器。

我的App\Article.php

...

protected $events = [

    'created' => Events\ArticleWasPublished::class

];

...

我的App\Providers\EventServiceProvider.php

protected $listen = [
    'App\Events\ArticleWasPublished' => [
        'App\Listeners\NotifyUsers',
    ],
];

我的App\Events\ArticleWasPublished.php

...

use App\Article;

...

{

    public $article;

    public function __construct(Article $article)
    {
        $this->article = $article;
    }

...

我的App\Listeners\NotifyUsers.php

use App\Notification;

...

public function handle(ArticleWasPublished $event)
{
    Notification::create([
        'article_id' => $event->article->id,
        'message' => 'A new Article was created'
    ]);
    var_dump('Something');
}

我在这里做错了什么?

我的问题是创建新文章时没有创建新通知。我什至没有收到任何错误。

【问题讨论】:

    标签: php laravel events listener


    【解决方案1】:

    据我所知,在 Laravel 5.5 中,该属性被命名为 $dispatchesEvents,而不是 $events。你用的是这个版本吗?

    https://laravel.com/docs/5.5/eloquent#events

    如果您从旧版本迁移,这是您需要做的更改之一:

    模型 $events 属性

    模型上的 $events 属性应该重命名为 $调度事件。之所以做出这样的改变,是因为大量 用户需要定义事件关系,这导致了 与旧属性名称冲突。

    【讨论】:

    • 是的,我使用的是 Laravel 5.5 。谢谢你的回答。它帮助了我:)。我在 laravel 事件文档中搜索这个方法,找不到,只有手动监听的方法。
    猜你喜欢
    • 2017-02-19
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 2012-06-03
    • 2019-11-07
    • 2018-09-01
    • 2018-12-03
    相关资源
    最近更新 更多