【问题标题】:Getting "Undefined variable: emails" in Laravel 5.4在 Laravel 5.4 中获取“未定义变量:电子邮件”
【发布时间】:2017-04-12 07:05:17
【问题描述】:

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

【问题讨论】:

  • 匿名函数不知道$emails变量。

标签: php laravel-5.4 php-7.1


【解决方案1】:

问题就在这里:

use ($request) {

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

use ($request, $emails) {

现在你可以使用它了。

Anonymous function reference

【讨论】:

  • 当然,感谢@Mayank Pandeyz 的现场。您可能只想将答案从 use ($request, emails) { 更新为 use ($request, $emails) {
【解决方案2】:

只需在匿名函数中使用$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;
}

希望这会有所帮助。

【讨论】:

  • 哈哈,这对我来说是一个史诗般的失败,感谢您发现这个 TipuZaynSultan。
猜你喜欢
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
  • 2017-07-23
  • 2019-03-12
  • 1970-01-01
  • 2019-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多