2014-12-06 2 views
-1

Я пытаюсь отправить электронное письмо с помощью Laravel Mail & получение неопределенной переменной: данные в поле зрения. Вот мой код контроллера.Laravel Mail Undefined Variable

$insured  = Claim::where('id', '=', $claim_id)->first()->toArray(); 
    $workshop  = Workshop::where('id', '=', $insured['workshop_id'])->first()->toArray(); 
    $data   = Document::whereRaw('claim_id = ' . $claim_id . ' AND (documents.status = 10 OR documents.status = 12)') 
         ->join('docs','documents.doc_id', '=', 'docs.id') 
         ->join('claims','documents.claim_id', '=', 'claims.id') 
         ->get(array('docs.email_text', 'claim_of', 'vehicle_no'))->toArray(); 
    Mail::send('emails.workshop', $data, function($message) 
    { 
     $message->to('[email protected]')->subject('Testing'); 
    }); 

Посмотреть

{{ $data[0]['claim_of'] }} 

<br /> 

{{ $data[0]['vehicle_no'] }} 

<br /> 


    <?php $i = 1 ; ?> 
    @foreach($data as $key => $claim) 
     <p> {{ $i }}. {{ $claim->email_text }}</p> 
     <?php $i++ ; ?> 
    @endforeach 

Когда я заменить Laravel Почтовый код с

  return View::make('emails.workshop')->with('data', $data); 

все работает отлично.

ответ

2

Параметры должны быть переданы в качестве ключа массива значение

Mail::send('emails.workshop', array('data' => $data), function($message) 
{ 
    $message->to('[email protected]')->subject('Testing'); 
}); 

Laravel Docs

Там хорошая функция PHP называется compact, что делает это автоматически, основываясь на имени переменной.

Так compact('data') возвращается array('data' => $data) (если $data определен)

+0

Спасибо большое @lukasgeiter Ваш ответ решил эту ошибку. – Aman

+0

Добро пожаловать :) – lukasgeiter