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
是一个单独的块,它看不到其他变量吗?
答案 0 :(得分: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