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

Laravel Notification使用Markdown邮件模板时Undefined variable报错如何解决

问题原因

你混淆了普通Mailable类和通知系统MailMessage的传参规则。Laravel普通邮件中「Mailable类公共属性自动注入视图」的规则,不适用于通知的邮件场景。通知的markdown视图默认只会自动注入$notifiable变量,你定义在通知类中的$data公共属性不会被自动传递到视图,所以会出现变量未定义的报错。如果你收到的报错是Undefined variable: claim,额外检查下模板是否有引用到未传递的$claim变量即可。

解决方法

有两种常用的传参方案可选:

方案1:调用markdown方法时直接传参

修改通知类的toMail方法,在调用markdown方法时通过第二个参数传入需要传递的变量数组:

public function toMail($notifiable)
{
    return (new MailMessage)
        ->subject('Subject')
        ->markdown('emails.admin.banking.cheque_discrepancy', [
            'data' => $this->data,
            // 其他需要传递的变量都可以放在这个数组里
        ]);
}

方案2:使用with方法传参

也可以链式调用with方法传递变量,效果和方案1完全一致:

public function toMail($notifiable)
{
    return (new MailMessage)
        ->subject('Subject')
        ->with('data', $this->data)
        ->markdown('emails.admin.banking.cheque_discrepancy');
}

内容的提问来源于stack exchange,提问作者user3163357

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:06:01