由于我需要多个操作按钮,因此我试图将变量传递给通知减价(而不是直接通过通知toMail
方法)。我希望用户能够回答电子邮件中提出的问题。这是我在通知降价中尝试的操作:
@component('mail::button', ['url' => 'https://myapp.dev/response/' . $event->id . '/' . $user->id . '/yes'])
Yes
@endcomponent
@component('mail::button', ['url' => 'https://myapp.dev/response/' . $event->id . '/' . $user->id . '/no'])
No
@endcomponent
这是我用于通知本身的代码:
class eventAlert extends Notification
{
use Queueable;
public $event;
public $user;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct(Event $event, User $user)
{
$this->event = $event;
$this->user = $user;
}
public function toMail($notifiable)
{
return (new MailMessage)
->greeting('Hey ' . $this->user->fn)
->line('There is an event today @ '. $this->event->edatetime->format('h:i A'))
->line($this->event->location)
->markdown('mail.notifications.eventalert');
}
但是,我尝试运行的预定作业出现错误,因为有一个不确定的event变量。我知道,对于Mailable
类,您可以使用在markdown本身中通过构造函数传递的数据,因此我尝试将变量从public
更改为protected
,就像应该用于{ {1}}类,但这仍然行不通。如何将变量数据传递到通知降价?
答案 0 :(得分:1)
如果将其分配给函数中的变量,会发生什么情况,
public function toMail($notifiable)
{
$aux = $this->event;
return (new MailMessage)
->greeting('Hey ' . $this->user->fn)
->line('There is an event today @ '. $aux->edatetime->format('h:i A'))
->line($aux->location)
->markdown('mail.notifications.eventalert');
}
如果这都不起作用,则可能是事件未正确分配。