Tim Kruger
Tim Kruger

Reputation: 897

Getting "Undefined variable: emails" in Laravel 5.4

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

Answers (2)

Mayank Pandeyz
Mayank Pandeyz

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.

Anonymous function reference

Upvotes: 2

TipuZaynSultan
TipuZaynSultan

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

Related Questions