0

为什么我在 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;
}
4

2 回答 2

2

问题在这里:

use ($request) {

$emails在匿名函数中使用,您必须在此处传递它,例如:

use ($request, $emails) {

现在你可以使用它了。

匿名函数参考

于 2017-04-12T07:23:15.753 回答
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;
}

希望这可以帮助。

于 2017-04-12T07:16:46.220 回答