114

我正在尝试使用 Laravel 4 中的邮件类,但我无法将变量传递给 $m 对象。

$team 对象包含我用雄辩的方式从数据库中获取的数据。

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

出于某种原因,我收到 $team 对象不可用的错误。我想这与范围有关。

有任何想法吗 ?

4

1 回答 1

244

如果您$team在函数外部实例化变量,则它不在函数范围内。使用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');
});

注意:正在使用的函数是PHP 闭包(匿名函数),它不是 Laravel 独有的。

于 2013-01-23T16:59:57.797 回答