如何将数据传递到Laravel中的Notification markdown?

问题描述 投票:1回答:1

我试图将变量传递给我的通知markdown(而不是直接通过通知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');
}

但是,我收到的错误是我正在尝试运行的预定作业,有一个未定义的事件变量。我知道对于Mailable类,你可以使用通过markdown本身的构造函数传递的数据,所以我试图将我的变量从public更改为protected,就像它应该用于Mailable类,但是这仍然不起作用。如何将可变数据传递到通知标记?

laravel notifications markdown
1个回答
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');
}

如果这不起作用,可能没有正确分配事件。

© www.soinside.com 2019 - 2024. All rights reserved.