2017-09-23 2 views
2

Ich erstelle eine neue Anwendung, auf der, wenn ein Artikel erstellt wird, eine Benachrichtigung angezeigt wird. Ich habe versucht, Ereignisse und Listener zu verwenden.

Mein App\Article.php

... 

protected $events = [ 

    'created' => Events\ArticleWasPublished::class 

]; 

... 

Mein App\Providers\EventServiceProvider.php

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

Mein App\Events\ArticleWasPublished.php

... 

use App\Article; 

... 

{ 

    public $article; 

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

... 

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

Was mache ich hier falsch?

Mein Problem ist, wenn ein neuer Artikel erstellt wird, wird eine neue Benachrichtigung nicht erstellt. Ich bekomme nicht einmal irgendwelche Fehler.

Antwort

2

Soweit ich sehe, in Laravel 5.5 die Eigenschaft heißt $ dispatchesEvents, und nicht $ Ereignisse. Verwenden Sie diese Version?

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

Es ist eine der Änderungen, die Sie tun müssen, wenn Sie von einer älteren Version migrieren:

Modell $ events Property

Die $ events Eigenschaft auf Ihre Modelle sollten umbenannt in $ dispatchesEvents. Diese Änderung wurde aufgrund einer hohen Anzahl von Benutzern vorgenommen, die eine Ereignisbeziehung definieren müssen, die einen Konflikt mit dem alten Eigenschaftsnamen verursacht hat.

+0

Ja, ich benutze Laravel 5.5. Danke für die Antwort. Es hat mir geholfen :) . Ich habe diese Methode in der Laravel-Event-Dokumentation gesucht und dort konnte ich keine finden, es gab nur die Möglichkeit, manuell zuzuhören. – Advaith

Verwandte Themen