Просто возиться с событиями / слушателями / заданиями Laravel, я должен был исправить некоторые вещи. Наличие журналов по нескольким классам действительно отталкивало меня.
В конструкторе Event мне пришлось использовать метод all()
при настройке запроса.
$this->request = $request->all()
для правильного доступа к данным по имени свойства.
// Event Constructor
public function __construct( ContactRequest $request )
{
$this->request = $request->all();
// \Log::info( 'Event-Constructor', [ 'contact_request' => $this->request ] );
}
Событие передает слушателю объект события с набором данных в конструкторе событий как свойство объекта события. Доступ к данным должен осуществляться через объект события.
// Listener
public function handle( ContactRequestValidated $event )
{
// \Log::info( 'listener', [ 'contact-event' => $event->request ] );
dispatch( new SendContactRequestEmail( $event->request ));
}
Следующая часть Я не совсем уверен, почему это происходит, но в работе запрос был изменен с объекта на массив.
Итак, это код работы:
// Job Constructor
public function __construct( $request )
{
$this->request = $request; // Actually an array, not an object
}
// Job handle
public function handle()
{
// \Log::info( 'job-contact-request', [ 'request' => $this->request ] );
$email = new ConfirmContactRequest( $this->request );
\Log::info( 'job-contact-request', [ 'email_html' => $email ] );
// Note request has to be accessed by array notation rather than arrow method
Mail::to( $this->request['client_email'] )->send( $email );
}