Reputation: 897
Why am I getting "Undefined variable: emails" in Laravel 5.4, but the same code is working fine in Laravel 5.2? Below is a code snipped. Don't think this matters but I'm using PHP 7.1.3.
public function send(Request $request) {
$emails = "";
try {
$emails = [$request->input('to'), "[email protected]"];
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;
}
Upvotes: 0
Views: 671
Reputation: 26258
The issue is here:
use ($request) {
to use $emails
inside the anonymous function you have to pass it here like:
use ($request, $emails) {
Now you can use it.
Upvotes: 2
Reputation: 783
Just simply use the $emails
variable in the anonymous function along with $request
variable.
Full code to give this it a try.
public function send(Request $request) {
$emails = "";
try {
$emails = [$request->input('to'), "[email protected]"];
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;
}
Hope this helps.
Upvotes: 1