Pasar datos a un cierre en Laravel 4

2 minutos de lectura

avatar de usuario
Benjamín González

Estoy tratando de usar Mail Class en Laravel 4 y no puedo pasar variables al objeto $m.

el objeto $ equipo contiene datos que tomé de la base de datos con elocuente.

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

Por alguna razón, recibo un error donde el objeto $team no está disponible. Supongo que tiene algo que ver con el alcance.

  • Exactamente el mismo escenario para mí. El problema Mail::send me llevó a buscar cómo pasar variables a los cierres y luego volver a esto. ¿Quizás se debe agregar una señal a los documentos de correo de laravel sobre esto?

    – Shaun Reino Unido

    12 de enero de 2015 a las 11:20

avatar de usuario
Bendición

Si instanciaste el $team variable fuera de la función, entonces no está en el alcance de las funciones. Utilizar el usar palabra clave.

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

Nota: La función que se utiliza es una Cierre de PHP (función anónima) No es exclusivo de Laravel.

  • Gracias, no me di cuenta de que podías usar ‘usar’ de esa manera. Ojalá hubiera podido aprender esto antes.

    – Douglas.Sesar

    20 de julio de 2014 a las 23:12

  • También funcionó para resolver mi problema con Maill::queue en Laravel 5

    – David Hyogo

    28 de febrero de 2015 a las 9:27

  • @DavidHyogo Yo también, me alegro de encontrar esta publicación

    – atom2ueki

    4 de mayo de 2015 a las 3:18

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad