You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel框架下从控制器向邮件类传递变量失败的问题求助

解决Laravel控制器向邮件类传递变量的问题

嘿,我一眼就看到你代码里的问题啦!核心问题出在welcomemail邮件类的构造函数上——你没有把控制器传过来的$email_data作为参数接收,导致类里的$email_data根本没拿到值,自然没法传递到Blade视图里。

下面是具体的修复步骤:

1. 修改邮件类的构造函数,接收传入的变量

打开App\Mail\welcomemail.php,把构造函数改成这样:

public function __construct($email_data)
{
    $this->email_data = $email_data;
    $this->example = 'example';
}

原来的构造函数是空的,没有接收外部传入的$email_data,所以你之前的赋值操作里,$email_data是未定义的变量,等于白忙活一场。现在加上参数后,就能正确把控制器传来的数组赋值给类的公共属性了。

2. 确认公共属性的设置正确

你已经把$email_data和$example定义成了公共属性(public $email_data;),这一点做得很对!Laravel会自动把邮件类里的公共属性传递到对应的Blade视图中,不需要额外在build()方法里手动传递。

3. 控制器代码无需修改

你的控制器代码是完全正确的:

$email_data = array(
    'first_name'=>'John',
    'last_name'=>'Doe',
    'email'=>'john@doe.com',
    'password'=>'temp',
);
Mail::to($email_data['email'])->send(new welcomemail($email_data));

这段代码正确地把构造好的数组传递给了邮件类的实例。

小提示(可选但推荐)

按照Laravel的编码规范,类名建议使用大驼峰命名法,比如把welcomemail改成WelcomeMail,这样既符合PSR规范,也能避免一些潜在的自动加载问题。

现在重新测试邮件发送,你应该能在welcomemail.blade.php里正常获取到$email_data和$example的值啦!

内容的提问来源于stack exchange,提问作者Ludo.Snel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 05:17:49