将数据传递给Laravel 4中的闭包

时间:2013-01-23 14:30:46

标签: php laravel laravel-4

我试图在Laravel 4中使用Mail Class,而且我无法将变量传递给$ 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对象不可用。我想它与范围有关。

有什么想法吗?

1 个答案:

答案 0 :(得分:216)

如果在函数外部实例化了$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 Closure (anonymous function)它不是Laravel独有的。