为什么我会得到"未定义的变量:电子邮件"在Laravel 5.4中,但是相同的代码在Laravel 5.2中工作正常吗?下面是一段代码剪辑。不要认为这很重要,但我使用的是PHP 7.1.3。
public function send(Request $request) {
$emails = "";
try {
$emails = [$request->input('to'), "john.doe@gmail.com"];
Mail::send('email.contact', ['request' => $request], function($message) use ($request) {
$message->from($request->input('email'), $request->input('email'));
$message->to($emails[0], $emails[0])
->cc($emails[1], $emails[1])
->subject("Contact Us");
});
$response = array (
'success' => true,
'message' => 'Message sent.',
$request
);
}
catch(Exception $e) {
$response = array (
'success' => false,
'message' => $e->getMessage(),
$request
);
}
// return Response::json( $response );
return $response;
}
答案 0 :(得分:2)
问题在于:
use ($request) {
在匿名函数中使用$emails
,你必须在这里传递它:
use ($request, $emails) {
现在你可以使用它。
答案 1 :(得分:1)
只需在匿名函数中使用$emails
变量以及$request
变量。
完整的代码,试试这个。
public function send(Request $request) {
$emails = "";
try {
$emails = [$request->input('to'), "john.doe@gmail.com"];
Mail::send('email.contact', ['request' => $request], function($message) use ($request, $emails) {
# Here add $emails variable in use list.
$message->from($request->input('email'), $request->input('email'));
$message->to($emails[0], $emails[0])
->cc($emails[1], $emails[1])
->subject("Contact Us");
});
$response = array (
'success' => true,
'message' => 'Message sent.',
$request
);
}
catch(Exception $e) {
$response = array (
'success' => false,
'message' => $e->getMessage(),
$request
);
}
// return Response::json( $response );
return $response;
}
希望这有帮助。