Laravel:我不能在同一个函数上使用Request对象两次

时间:2017-03-13 12:39:12

标签: php laravel email artisan

我正在尝试构建联系表单,我希望它发送用户邮件以发送网站电子邮件,我希望它发送用户邮件的消息通知他收到了他的邮件,所以我使用了控制器中的这段代码:

 public function mail(Request $request) {
     Mail::send('mail.mail', ['name'=>"$request->name" , 'email'=>"$request->email" , 'msg'=>"$request->message"], function($message) {
         $message->to('housma.elma@gmail.com', 'Housma')->subject('Housma.com enquiry');
     });

     Mail::send('mail.mailResponse', ['name'=>"$request->name"  ], function($message ) {
        /*line 29 */    
        $message->to("$request->email", "$request->name")->subject('Housma.com : Auto reply');
     });

     return Redirect::to('/contact')->with('successful', 'Your message has been sent');
}

我的电子邮件的第一条消息工作正常,但当Laravel到达第二条消息时,我收到此错误

  

pagesController.php第29行中的ErrorException:未定义的变量:request

3 个答案:

答案 0 :(得分:4)

不是你不能两次使用它,而是Mail :: send无法访问它。您需要使用use语句传递它:

 Mail::send('mail.mailResponse', ['name'=>"$request->name"  ], function($message ) use ($request) {

答案 1 :(得分:1)

替换第28行
Mail::send('mail.mailResponse', ['name'=>"$request->name"  ],
 function($message) use($request) {

在PHP中,如果要在闭包中使用变量,则需要使用use ($variablename)

答案 2 :(得分:0)

可能是你应该将$ request传递给关闭。 像这样!

Mail::send('mail.mailResponse', ['name'=>"$request->name"  ], function($message ) use ($request) {

/*line 29 */    $message->to("$request->email", "$request->name")->subject('Housma.com : Auto reply');
    });

      return Redirect::to('/contact')->with('successful', 'Your message has been sent');
    }