【问题标题】:Laravel : I can't use Request object two times at the same functionLaravel:我不能在同一个函数中使用两次 Request 对象
【发布时间】:2017-08-03 11:35:30
【问题描述】:

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

 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:未定义变量:请求

【问题讨论】:

  • 它不工作,它给出了同样的错误

标签: php laravel email laravel-artisan


【解决方案1】:

将第 28 行替换为

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

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

【讨论】:

  • 我正在等待接受时间来接受你的答案,因为你是第一个答案
  • 你能给我的问题打分吗
【解决方案2】:

不是不能使用两次,而是 Mail::send 不能访问。您需要使用use 语句将其传入:

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

【讨论】:

    【解决方案3】:

    也许你应该将 $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');
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-02
      • 2014-03-09
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      相关资源
      最近更新 更多