Also probiere ich die neue Laravel 5 Event-Methode aus.Laravel 5 Ereignishandler nicht schießend
In meinem Repository, ich bin Brennen der Veranstaltung "KitchenStored", wie er so:
// Events
use App\Events\KitchenStored;
class EloquentKitchen implements KitchenInterface {
public function store($input) {
$kitchen = new $this->kitchen;
$kitchen->name = $input['name'];
$kitchen->save();
\Event::fire(new KitchenStored($kitchen));
return $kitchen;
}
dem dieses Ereignis erfolgreich ausgelöst:
<?php namespace App\Events;
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
class KitchenStored extends Event {
use SerializesModels;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($kitchen)
{
$this->kitchen = $kitchen;
}
}
Allerdings ist es nicht darauf verbinden Handler:
<?php namespace App\Handlers\Events;
use App\Events\KitchenStored;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldBeQueued;
class AttachCurrentUserToKitchen {
/**
* Create the event handler.
*
* @return void
*/
public function __construct()
{
dd('handler');
}
/**
* Handle the event.
*
* @param KitchenStored $event
* @return void
*/
public function handle(KitchenStored $event)
{
//
}
}
was ich weiß, weil die dd ('handler'); wird während des Anforderungslebenszyklus nicht ausgelöst.
Ich habe die Veranstaltung mit seinen Zuhörern hier registriert:
<?php namespace App\Providers;
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider {
/**
* The event handler mappings for the application.
*
* @var array
*/
protected $listen = [
App\Events\KitchenStored::class => [
App\Handlers\Events\AttachCurrentUserToKitchen::class
]
];
/**
* Register any other events for your application.
*
* @param \Illuminate\Contracts\Events\Dispatcher $events
* @return void
*/
public function boot(DispatcherContract $events)
{
parent::boot($events);
Event::listen('App\Events\KitchenStored',
'App\Handlers\Events\AttachCurrentUserToKitchen');
}
}
Kann diesen Prozess besser jemand erklären, so kann ich mit dem saubersten Code gehen halte ich bis heute habe?
Vielen Dank
Dies sollte mehr Aufmerksamkeit bekommen. Gemeinsames Problem... – AJReading
Die Verwendung der :: class-Notation ist aufgrund der Autovervollständigung besser, um Rechtschreibfehler zu vermeiden. – systemovich
@systemovich omg ja ... bewegte einen Listener und es hörte auf zu arbeiten, alle Pfade wurden automagisch überarbeitet, außer dieser einen, dauerte ewig, um dieses Problem zu finden, weil es keinen Fehler wirft –