Вот событие:
<?php
namespace App\Modules\Clinicians\Events;
use Illuminate\Queue\SerializesModels;
class CreateHealthCareProviderEvent
{
use SerializesModels;
public $data;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(array $data)
{
$this->data = $data;
}
}
Событие вызывается просто отлично. Но слушатель:
<?php
namespace App\Modules\Clinicians\Listeners;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use App\Modules\Clinicians\Events\CreateHealthCareProviderEvent;
use App\Modules\Clinicians\Events\EmailClinicAdminsEvent;
use App\Modules\Users\Services\RegisterUserService;
class CreateHealthCareProviderListener
{
private $registerUserService;
/**
* Create the event listener.
*
* @return void
*/
public function __construct(RegisterUserService $registerUserService)
{
$this->registerUserService = $registerUserService;
}
/**
* Handle the event.
*
* @param object $event
* @return void
*/
public function handle(CreateHealthCareProviderEvent $event)
{
$user = $this->registerUserService->setRequestData($event->data)->registerUser(Clinic::find($event->data['clinic_id']));
$user->clinician()->create([
'user_id' => $user->id,
]);
$user->clinician->clinics()->attach($event->data['clinic_id']);
event(new EmailClinicAdminsEvent($user, $event->data['clinic_id']));
}
}
Никогда не звонят. Когда-либо. Итак, как мне их зарегистрировать?
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
],
// When a new health care provider registers:
CreateHealthCareProviderEvent::class => [
CreateHealthCareProviderListener::class,
],
// Email the Clinic admins when a healthcare provider registers:
// Called in the CreateHealthCareProviderListener handler method.
EmailClinicAdminsEvent::class => [
EmailClinicAdminsListener::class,
],
];
...
}
У меня никогда не было проблем с регистрацией событий и слушателей, как это раньше. Они всегда работают. Но по какой-то причине слушатель не будет стрелять по этому событию. Событие происходит просто отлично. Но не слушатель. Чего мне не хватает?
Я пробовал:
php artisan optimize
composer dump-autoload
Ничего.
Это называется так:
// Create the health care provider user:
event(new CreateHealthCareProviderEvent($request->all()));
Есть идеи? Я проверил орфографию и пространства имен, и все кажется правильным. Чего мне не хватает?
Нет ошибок, ничего. Тесты все еще проходят (я не фальсифицирую события), и покрытие теста показывает, что событие вызывается, но покрытие теста показывает, что слушатель не вызван. Когда я испытываю это в браузере, никакой пользователь не создается - что делает слушатель.
Все мои другие события и связанные с ними слушатели называются просто отлично.
Что происходит?