获取"未定义的变量:电子邮件"在Laravel 5.4

时间:2017-04-12 07:05:17

标签: php laravel-5.4 php-7.1

为什么我会得到"未定义的变量:电子邮件"在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;
}

2 个答案:

答案 0 :(得分:2)

问题在于:

use ($request) {

在匿名函数中使用$emails,你必须在这里传递它:

use ($request, $emails) {

现在你可以使用它。

Anonymous function reference

答案 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;
}

希望这有帮助。