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

Laravel发送新用户注册邮件通知报Undefined variable $user错误如何修复

问题根因

你在通知类的toMail方法中调用markdown邮件模板时,没有将通知类中已经注入的$user变量传递给模板,导致Blade渲染时找不到对应变量抛出错误。


修复方案

修改RegisteredUsers通知类的toMail方法,链式调用with()方法把user变量传给视图即可解决报错:

public function toMail($notifiable)
{
    return (new MailMessage)
        ->markdown('mail.registered.user', [
            'user' => $this->user
        ]);
}

其他必要优化点

  • 删除密码输出逻辑:你代码中用户密码已经做了Hash加密,输出给管理员没有任何意义,还会造成严重安全隐患,直接删掉Blade模板里{{ $user->password }}这一行即可。
  • 替换env()调用方式:Laravel执行config:cache后,所有业务代码中的env()调用都会返回null,建议你把Twilio配置写到config/services.php中,后续用config()方法读取:
    先在config/services.php添加配置:
    'twilio' => [
        'auth_token' => env('TWILIO_AUTH_TOKEN'),
        'sid' => env('TWILIO_SID'),
        'verify_sid' => env('TWILIO_VERIFY_SID'),
    ]
    
    控制器中读取配置改为:
    $token = config('services.twilio.auth_token');
    $twilio_sid = config('services.twilio.sid');
    $twilio_verify_sid = config('services.twilio.verify_sid');
    
  • 检查name字段逻辑:你的Blade模板里调用了$user->name,但控制器创建用户时没有录入name字段,如果用户表没有这个字段会引发新报错,要么补上name字段的提交和存储逻辑,要么删掉模板里的对应调用。
  • 创建用户优先用验证后的数据:控制器中User::create尽量用验证完成的$data数组取值,不要直接用$request取值,避免存入未验证的非法数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:15:04