【问题标题】:Undefined Variable Inside Mail::send in Laravel 5Laravel 5 中的 Mail::send 内部未定义变量
【发布时间】:2015-11-17 11:18:23
【问题描述】:
public function postAcceptedSign($md5)
{
    $notif = CustomerOrder::where('sign_link', '=', $md5)->get();

     Mail::send('emails.signed-notif', ['order_num' => $notif[0]->order_number], function ($m) {
        $m->to('mis@qdf-phils.com', '')->subject('Customer Order '.$notif[0]->order_number.' is now signed');
    });

    Session::flash('alert-success', 'Order Signed.');

    return Redirect::to('home');
}

我得到Undefined variable: notif 指向这个

Mail::send('emails.signed-notif', ['order_num' => $notif[0]->order_number], function ($m) {
   $m->to('mis@qdf-phils.com', '')->subject('Customer Order '.$notif[0]->order_number.' is now signed');
});

为什么我在$notif[0] 中得到未定义的变量,你可以看到我的变量已经在上面定义了?是不是因为开头的Mail::send是一个单独的block,它看不到其他变量?

【问题讨论】:

  • 在回调中尝试function ($m) use($notif) {

标签: php variables laravel laravel-5 closures


【解决方案1】:

闭包块(发送电子邮件的函数)不可见外部块的范围。

因此,如果您想从闭包内部访问变量,您必须使用 use 关键字将其显式传递给闭包;像这样:

Mail::send( 'emails.signed-notif', 
            ['order_num' => $notif[0]->order_number],
            function($m) use ($notif) /* here you're passing the variable */
            {
                $m->to('mis@qdf-phils.com', '')->subject('Customer Order'.$notif[0]->order_number.' is now signed');
            } );

有关匿名函数和闭包的更多信息,请查看here

【讨论】:

  • 谢谢!完美运行。计时器过后会接受这个答案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多