I'm trying to use the Mail Class in Laravel 4, and I'm not able to pass variables to the $m object.
the $team object contains data I grabbed from the DB with 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('[email protected]', 'Sender');
});
For some reason I get an error where $team object is not available. I suppose it has something to do with the scope.
Any ideas ?
If you instantiated the $team
variable outside of the function, then it's not in the functions scope. Use the use keyword.
$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');
});
Note: The function being used is a PHP Closure (anonymous function) It is not exclusive to Laravel.