Laravel邮件视图无法渲染传递的数据问题排查
解决Laravel Mail发送时Blade变量未渲染的问题
嘿,这个问题我之前踩过一模一样的坑!咱们一步步排查解决:
检查视图文件后缀
首先确认你的视图文件名是不是NotifyUserExpiring.blade.php?如果只叫NotifyUserExpiring.php,Laravel会把它当成普通PHP文件,完全不会解析Blade语法,直接输出{{ $user->first_name }}这种原始内容。这是最容易犯的小失误~确认邮件类正确传递变量给视图
打开你的NotifyUserExpiring邮件类,先确保构造函数接收并保存了用户实例:protected $user; public function __construct(User $user) { $this->user = $user; }然后在
build()方法里,要通过with()把变量传给视图,或者直接在view()里传数组:public function build() { // 两种方式都可以,选你顺手的 return $this->view('web.mail.NotifyUserExpiring') ->with('user', $this->user); // 或者 // return $this->view('web.mail.NotifyUserExpiring', ['user' => $this->user]); }检查Mail调用时是否传对了用户
确保你调用Mail发送的时候,把正确的用户实例传给了邮件类:use App\Mail\NotifyUserExpiring; use Illuminate\Support\Facades\Mail; // ... Mail::to($targetUser)->send(new NotifyUserExpiring($targetUser));清除视图缓存
如果上面都没问题,但还是没渲染,可能是视图缓存搞的鬼。执行这条命令清一下缓存:php artisan view:clear
一般来说,这几个步骤就能搞定Blade变量不渲染的问题啦~
内容的提问来源于stack exchange,提问作者Q8root
相关产品推荐
相关产品推荐

