Laravel|在Notify中传递变量

fykwrbwg  于 2023-04-07  发布在  其他
关注(0)|答案(4)|浏览(274)

我想发送一封邮件通知,它的工作原理,但当我尝试把变量,它返回,他们是未定义的.我不明白如何传递一个变量通知,我试图做->withResult($result),但它没有工作.这里是控制器:

$result = Review::where('user_hash', '=', $data['lname_c'])->where('email', $data['email_c'])->orderBy('created_at', 'desc')->first();
    $result->notify(new SendReview());

我的SendReview.php通知:

public function toMail($notifiable)
{

    return $result['invitation_id']; // test to check if variable is passed
    return (new MailMessage)
                ->line('Test.')
                ->action('Nani', url($url))
                ->line('Thank you');
}

在我的Review表中有user_hash和invitation_id,我想将它们传递给notify。当我执行return $result['invitation_id'];时,它可以工作。希望我可以理解,我检查了重复的问题,但找不到。

pbpqsu0x

pbpqsu0x1#

这就是他们在文档中的做法。

$arr = [ 'foo' => "bar" ];
$result->notify(new SendReview($arr));

在你的SendReview.php

...

protected $arr;

public function __construct(array $arr) {
        $this->arr = $arr;
}

public function toMail($notifiable) {
        // Access your array in here
        dd($this->arr);
}
vhipe2zx

vhipe2zx2#

必须在Notification类中使用$notifiable变量。
它是通知要发送到的类的示例。所以这里您的review对象作为$notifiable变量传递。
您可以尝试在toMail()方法中将其记录为logger($notifiable)并检查其属性。

8xiog9wr

8xiog9wr3#

对于有兴趣传递对象(例如$msg_recipient)并从控制器向特定用户发送电子邮件的人。

控制器:

记得加use Illuminate\Support\Facades\Notification;

Notification::route('mail',$msg_recipient->email)
                        ->notify(new MsgReceived($msg_recipient));

在您的通知中__construct

public function __construct($msg_recipient)
    {
        $this->username = $msg_recipient->username;
    }

toMail函数

public function toMail($notifiable)
    {
        $username = $this->username;

        return (new MailMessage)
                    ->greeting('Hello, '.$username)
                    ->line('You received a brand new msg!')
                    ->action('View msg', url('/'.$username));
    }
szqfcxe2

szqfcxe24#

唯一的办法似乎是:

public function toMail($notifiable)
{
    $message = (new MailMessage)
        ->greeting('Hi ' . $this->user->first_name . ',')
        ->subject($this->subject)
        ->line($this->body)
        // ->with(['id' => $this->user->id])
        ->line('')->view((str_contains($this->body, '</html>')) ? 'emails.empty' : 'emails.default');

    $message->viewData['id'] = $this->user->id;
    return $message;
}

相关问题