2017-09-23 172 views
2

我正在創建一個新的應用程序,當創建一個文章時將顯示一個通知。我嘗試過使用事件和聽衆。

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

我在這裏做錯了什麼?

我的問題是,當一篇新文章創建一個新的通知沒有得到創建。我甚至沒有得到任何錯誤。

回答

2

據我所知,在Laravel 5.5中,該屬性被命名爲$ dispatchesEvents,而不是$ events。你在使用這個版本嗎?

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

這是你需要做的,如果你是從舊版本遷移的變化之一:

型號$事件物業

的$事件財產上的模型應將其更名爲 $ dispatchesEvents。由於大量的 用戶需要定義事件關係,導致 與舊屬性名稱發生衝突,因此進行了此更改。

+0

是的,我正在使用Laravel 5.5。謝謝你的回答。它幫助我:)。我在laravel事件文檔中搜索這個方法,但我找不到一個,只有手動收聽的方法。 – Advaith