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
相关产品推荐
相关产品推荐

