Неопределенная переменная внутри почты :: отправить в Laravel 5

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 является отдельным блоком, который не может видеть другие переменные?

Блок закрытия (функция, отправляющая сообщение электронной почты) не имеет видимости области внешнего блока.

Итак, если вы хотите получить доступ к переменной изнутри закрытия, вы должны явно передать ее закрытию с использованием ключевого слова 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'); } ); 

Для получения дополнительной информации об анонимных функциях и закрытиях проверьте здесь