gpt4 book ai didi

php - 在 Laravel [php] 中将变量从 Controller 传递到 Mailables

转载 作者:行者123 更新时间:2023-12-02 06:50:56 28 4
gpt4 key购买 nike

在我的 UserController 中有一个函数

public function userFollow($id)
{
$authuser = Auth::user();
$authuser->follow($id);
//mail goes to the followiee ($id)
$followiee = User::where('id', $id)->first();
$to = $followiee->email;
Mail::to($to)->send(new MyMail);
return redirect()->back()->with('message', 'Following User');
}

我还创建了一个 Mailable MyMail

class MyMail extends Mailable
{
use Queueable, SerializesModels;


/**
* Create a new message instance.
*
* @return void
*/
public function __construct()
{
//
}

/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('emails.welcome');
}
}

在我的欢迎邮件中,我需要访问一些变量,比如在 UserController

中定义的 $to

我在 MyMail Mailable 中尝试了以下操作:

 public function build()
{
return $this->view('emails.welcome',['to' => $to]);
}

但我正在获取 Undefined variable: to

如何将变量从 Controller 传递到 Mailables?

更新:

到目前为止我尝试了什么:

用户 Controller

Mail::to($to)->send(new MyMail($to));

我的邮箱

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

public function build()
{
return $this->view('emails.welcome');
}

Welcome.blade.php

 {{ $to }}

错误:

FatalErrorException in Mailable.php line 442:
[] operator not supported for strings

最佳答案

一种解决方案是将变量传递给 MyMail 构造函数,如下所示:

用户 Controller

Mail::to($to)->send(new MyMail($to));

我的邮箱

public $myTo;

public function __construct($to)
{
$this->myTo = $to;
}

public function build()
{
return $this->view('emails.welcome');
}

Welcome.blade.php

{{ $myTo }}

更新:正如@Rahul 在他的回答中指出的那样, $to 属性可以定义为公共(public)的。在这种情况下,view 将自动填充它。

更新 2:您只需要为您的 $to 变量指定一个不同的名称(例如 $myTo),以将其与 中的 $to 区分开来>Mailable.php 定义为 public $to = [];

关于php - 在 Laravel [php] 中将变量从 Controller 传递到 Mailables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44796457/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com