PHP Laravel 5用户类属性不可访问,无法在创建帐户后发送电子邮件


PHP Laravel 5 User class properties not accessible for sending Email after account creation

我遇到了一个问题,无法将变量放入laravel中的Mail::send()函数中。请参阅以下代码:

$first_name = $request->input('first_name'),
$email = $request->input('email'),
//Create account
User::create([
    'first_name' => $first_name,
    'last_name' => $request->input('last_name'),
    'email' => $email,
    'password' => bcrypt($request->input('password')),
]);
//Send email to user
Mail::send('emails.test', ['fname' => $first_name], function($message)
{
    $message->to($email)
            ->subject('Welcome!');
});
return redirect()
    ->route('home')
    ->with('info', 'Your account has been created and an authentication link has been sent to the email address that you provided. Please go to your email inbox and click on the link in order to complete the registration.');

由于某种原因,当代码到达发送电子邮件时会中断,因为我收到了错误,数据被发送到数据库。为什么变量在之后不再可访问?

如有任何帮助,我们将不胜感激。感谢

闭包也可以从父作用域继承变量。任何这样的变量都必须传递给use语言构造。

来源:http://php.net/manual/en/functions.anonymous.php

换句话说,$email必须像这样继承:

Mail::send('emails.test', ['fname' => $first_name], function($message) use ($email)
{
    $message->to($email)
            ->subject('Welcome!');
});

注:第一行为use ($email)