96 votes

Passer des données à une fermeture dans Laravel 4

J'essaie d'utiliser la classe Mail dans Laravel 4 et je ne parviens pas à transmettre de 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('info@website.com', '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 ?

213voto

Blessing Points 1571

Si vous avez instancié la variable $ team en dehors de la fonction, alors ce n'est pas dans la portée des fonctions. Je pense que vous devez utiliser le mot clé "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');
});
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: