web-dev-qa-db-fra.com

Passer des données à une fermeture dans Laravel 4

J'essaie d'utiliser la classe Mail dans Laravel 4, et je ne suis pas en mesure de transmettre des variables à l'objet $ m.

l'objet $ team contient des données que j'ai extraites de la base de données avec éloquent.

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

Pour une raison quelconque, j'obtiens une erreur où l'objet $ team n'est pas disponible. Je suppose que cela a quelque chose à voir avec la portée.

Des idées ?

101
Benjamin Gonzalez

Si vous instanciez le $team variable en dehors de la fonction, alors ce n’est pas dans la portée des fonctions. Utilisez le mot-clé tiliser .

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

Remarque: la fonction utilisée est un fermeture PHP (fonction anonyme) Elle n'est pas exclusive à Laravel.

222
Blessing