2015-11-17 3 views
1
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('[email protected]', '')->subject('Customer Order '.$notif[0]->order_number.' is now signed'); 
    }); 

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

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

Я получаю Undefined variable: notif, который указывает на этуUndefined Variable Внутри Mail :: отправить в Laravel 5

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

Почему я получаю неопределенную переменную в $notif[0], где, как вы можете видеть, что мой переменная уже определена выше? Это потому, что исходный Mail::send является отдельным блоком, который не может видеть другие переменные?

+1

В обратном вызове попробуйте 'функция ($ м) использовать ($ Notif) {' –

ответ

0

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

Итак, если вы хотите получить доступ к переменной изнутри укупорочного средства, вы должны явно передать ее закрытию с использованием ключевого слова ; как это:

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

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

+1

Спасибо! Прекрасно работает. Примите этот ответ после таймера :) – jackhammer013

Смежные вопросы