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


108

我正在尝试在Laravel 4中使用Mail类,但无法将变量传递给$ 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对象不可用。我想这与范围有关。

有任何想法吗 ?


对我来说完全一样。Mail :: send问题导致我搜索将变量传递给闭包,然后再返回到此。也许需要在laravel mailer文档中添加一些标志吗?
ShaunUK

Answers:


231

如果$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(匿名函数),它不是Laravel独有的。


3
谢谢,我没有意识到您可以使用“ use”。我只希望我能早点学到这一点。
Douglas.Sesar 2014年

2
还致力于解决我在Laravel 5中使用Maill :: queue的问题
DavidHyogo,2015年

@DavidHyogo我也是,很高兴找到这个帖子
atom2ueki 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.