Meneruskan data ke penutupan di Laravel 4

108

Saya mencoba menggunakan Mail Class di Laravel 4, dan saya tidak bisa meneruskan variabel ke objek $ m.

objek $ team berisi data yang saya ambil dari DB dengan eloquent.

Mail::send('emails.report', $data, function($m)
{
   $m->to($team->senior->email, $team->senior->first_name . ' '. $team->senior->last_name );
   $m->cc($team->junior->email, $team->junior->first_name . ' '. $team->junior->last_name );
   $m->subject('Monthly Report');
   $m->from('[email protected]', 'Sender');
});

Untuk beberapa alasan saya mendapatkan kesalahan di mana $ team object tidak tersedia. Saya kira itu ada hubungannya dengan ruang lingkup.

Ada ide?

Benjamin Gonzalez
sumber
Skenario yang sama persis untuk saya. Masalah Mail :: send membuat saya mencari tentang meneruskan variabel ke closure dan kemudian kembali ke ini. Mungkin pertanda ada sesuatu yang perlu ditambahkan ke dokumen mailer laravel ini?
ShaunUK

Jawaban:

231

Jika Anda membuat instance $teamvariabel di luar fungsi, maka variabel itu tidak ada dalam cakupan fungsi. Gunakan kata kunci use .

$team = Team::find($id);
Mail::send('emails.report', $data, function($m) use ($team)
{
   $m->to($team->senior->email, $team->senior->first_name . ' '. $team->senior->last_name );
   $m->cc($team->junior->email, $team->junior->first_name . ' '. $team->junior->last_name );
   $m->subject('Monthly Report');
   $m->from('[email protected]', 'Sender');
});

Catatan: Fungsi yang digunakan adalah Penutupan PHP (fungsi anonim). Fungsi ini tidak eksklusif untuk Laravel.

Berkat
sumber
3
Terima kasih, saya tidak menyadari Anda bisa menggunakan 'menggunakan' seperti itu. Saya hanya berharap saya bisa mempelajari ini lebih cepat.
Douglas.Sesar
2
Juga bekerja untuk memecahkan masalah saya dengan Maill :: queue in Laravel 5
DavidHyogo
@DavidHyogo Saya juga, senang menemukan posting ini
atom2ueki