Passaggio di dati a una chiusura in Laravel 4


108

Sto cercando di utilizzare la Mail Class in Laravel 4 e non sono in grado di passare variabili all'oggetto $ m.

l'oggetto $ team contiene i dati che ho preso dal DB con eloquente.

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');
});

Per qualche motivo ricevo un errore in cui $ team object non è disponibile. Suppongo che abbia qualcosa a che fare con lo scopo.

Qualche idea ?


Esatto lo stesso scenario per me. Il problema Mail :: send mi ha portato a cercare di passare le variabili alle chiusure e poi di nuovo a questo. Forse un segno deve essere aggiunto ai documenti del mailer di laravel su questo?
ShaunUK

Risposte:


231

Se hai istanziato la $teamvariabile al di fuori della funzione, non è nell'ambito delle funzioni. Usa la parola chiave 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');
});

Nota: la funzione utilizzata è una chiusura PHP (funzione anonima) non è esclusiva di Laravel.


3
Grazie, non sapevo che potessi usare "usa" in questo modo. Vorrei solo averlo imparato prima.
Douglas.Sesar

2
Ha anche funzionato per risolvere il mio problema con Maill :: queue in Laravel 5
DavidHyogo

@DavidHyogo Anch'io, felice di trovare questo post
atom2ueki
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.