【问题标题】:Email value is undefined电子邮件值未定义
【发布时间】:2020-01-27 03:13:13
【问题描述】:

我有一个注册用户的功能,它应该在那里发送一封欢迎电子邮件。

public function register(Request $request) {

        $this->validate($request, [
            'email' => 'required|email|unique:users,email,',
            'password' => ['required',
                'min:6',
                'regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%_]).*$/',
                'confirmed'],
            'password_confirmation' => 'required',
            'name' => 'required',
        ]);

        $user = User::create([
            'name' => $request->get('name'),
            'email' => $request->get('email'),
            'password' => Hash::make($request->get('password')),
        ]);

        $email = $request->get('email');

        $data = array('name' => $request->get('name'));

        Mail::send(['text' => 'mail.mail'], $data, function ($message) {
            $message->to($email)->subject
                ('MySite - Welcome');
            $message->from('info@mysite.com', 'MySIte');
        });

        return response()->json(compact('user'), 200);

    }

但成功注册后,我收到一条错误消息,指出电子邮件字段未定义。当然,不会发送电子邮件。

这可能是什么原因?

如果我在发送电子邮件之前dd($email) 我会得到正确的电子邮件地址。

【问题讨论】:

    标签: php laravel email lumen


    【解决方案1】:

    由于 PHP 变量的作用域,$email 未在此函数中定义

    Mail::send(['text' => 'mail.mail'], $data, function ($message) {
        $message->to($email) ...
    });
    

    您可以使用 use 关键字将其传递给函数:

    Mail::send(['text' => 'mail.mail'], $data, function ($message) use($email) {
    

    【讨论】:

      猜你喜欢
      • 2020-04-24
      • 2022-07-20
      • 2021-10-26
      • 2012-11-26
      • 2016-10-24
      • 1970-01-01
      • 2019-04-25
      • 2015-01-16
      • 2021-06-25
      相关资源
      最近更新 更多