Я использую Laravel 5.0 (в старом проекте), а обработчик событий игнорируется.
Есть идеи, если я что-то забуду?
protected $listen = [
SupplierCreated::class => [
NotifySupplierCreated::class,
]
];
class SupplierCreated extends Event {
use SerializesModels;
public $userId;
/**
* Create a new event instance.
*
*/
public function __construct()
{
dd('Event'); // This dd() is working! The other one isn't
}
}
<?php namespace App\Handlers\Events;
use App\Events\SupplierCreated;
class NotifySupplierCreated {
/**
* Create the event handler.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param SupplierCreated $event
* @return void
*/
public function handle(SupplierCreated $event)
{
dd($event);
}
}
event(new SupplierCreated($supplier));
Я думаю, что вы можете что-то упустить в вашем App \ Providers \ EventServiceProvider
Вам необходимо добавить следующее
<?php namespace App\Providers;
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use App\Events\SupplierWasCreated;
use App\Handlers\Events\NotifySupplierCreated;
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen =
SupplierWasCreated::class => [
NotifySupplierCreated::class,
]
];
/**
* Register any other events for your application.
*
* @param \Illuminate\Contracts\Events\Dispatcher $events
* @return void
*/
public function boot(DispatcherContract $events)
{
parent::boot($events);
//
}
}
Как и все остальное, похоже, все должно работать нормально.
Я реализовал это событие, используя ваш код. Единственное, чего мне не хватало, было выше в EventServiceProvider.
<?php
namespace App\Events;
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class SupplierWasCreated extends Event
{
use SerializesModels;
public $supplier;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($supplier)
{
$this->supplier = $supplier
}
/**
* Get the channels the event should be broadcast on.
*
* @return array
*/
public function broadcastOn()
{
return [];
}
}
Тогда ваш обработчик
<?php
namespace App\Handlers\Events;
use App\Events\SupplierWasCreated;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class NotifySupplierCreated {
use InteractsWithQueue;
/**
* Create the event handler.
*
* @return void
*/
public function __construct()
{
}
/**
* Handle the event.
*
* @param SupplierCreated $event
* @return void
*/
public function handle(SupplierWasCreated $event)
{
dd($event);
}
}
Других решений пока нет …