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('info@website.com', 'Sender');
});

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

Ada ide?


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('info@website.com', 'Sender');
});

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.