У меня есть событие, которое вызывает слушателя, как только в системе создается транспортное средство.
Это мое событие:
class VehicleCreated
{
use Dispatchable, InteractsWithSockets, SerializesModels;
private $vehicle;
public function __construct(Vehicle $vehicle)
{
$this->vehicle = $vehicle;
}
public function getVehicle()
{
return $this->vehicle;
}
public function broadcastOn()
{
return new PrivateChannel('channel-name');
}
}
Это мой слушатель:
class SendSchedulingConfirmationListener implements ShouldQueue
{
use InteractsWithQueue;
public function handle(VehicleCreated $event)
{
$vehicle = $event->getVehicle();
$lead = $vehicle->lead;
Mail::to($lead->email)
->queue(new SchedulingConfirmation($vehicle, $lead));
}
}
Я использовал команду artisan для создания электронной почты:
php artisan make:mail SchedulingConfirmation --markdown=emails.leads.scheduling.confirmation
У меня возникли проблемы с настройкой темы электронной почты, в настоящее время мой класс выглядит следующим образом:
class SchedulingConfirmation extends Mailable
{
use Queueable, SerializesModels;
public $vehicle;
public $lead;
public function __construct(Vehicle $vehicle, Lead $lead)
{
$this->vehicle = $vehicle;
$this->lead = $lead;
}
public function build()
{
return $this
->subject('This is my subject')
->markdown('emails.leads.scheduling.confirmation');
}
}
Когда я запускаю электронную почту, она поступает в mailtrap с темой Подтверждения Планирования
Всего 2 ответа
Вы можете просто передать тему, когда будете обновлять почту:
$subject = 'truly awesome subject line'
Mail::to($lead->email)
->queue(new SchedulingConfirmation($vehicle, $lead, $subject));
Поэтому в вашем классе просто добавьте $subject
в качестве параметра в конструкторе:
class SchedulingConfirmation extends Mailable
{
use Queueable, SerializesModels;
public $vehicle;
public $lead;
public function __construct(Vehicle $vehicle, Lead $lead, $subject)
{
$this->vehicle = $vehicle;
$this->lead = $lead;
$this->subject = $subject
}
public function build()
{
return $this
->subject($this->subject)
->markdown('emails.leads.scheduling.confirmation');
}
}
задайте объект в конструкторе Mailable
class SchedulingConfirmation extends Mailable
{
use Queueable, SerializesModels;
public $vehicle;
public $lead;
public function __construct(Vehicle $vehicle, Lead $lead)
{
$this->vehicle = $vehicle;
$this->subject('This is my subject');
$this->lead = $lead;
}
public function build()
{
return $this
->markdown('emails.leads.scheduling.confirmation');
}
}