在 Laravel 4 中将数据传递到闭包

2022-08-30 07:18:41

我正在尝试在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.example', 'Sender');
});

由于某种原因,我收到一个错误,其中$team对象不可用。我想这与范围有关。


答案 1

如果在函数外部实例化了变量,则它不在函数范围内。使用 use 关键字。$team

$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.example', 'Sender');
});

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


答案 2

推荐