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

Posted

技术标签:

【中文标题】在 Laravel 4 中将数据传递给闭包【英文标题】:Passing data to a closure in Laravel 4 【发布时间】:2013-01-07 01:45:28 【问题描述】:

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

$team 对象包含我用 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('info@website.com', 'Sender');
);

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

有什么想法吗?

【问题讨论】:

对我来说完全一样的场景。 Mail::send 问题导致我搜索将变量传递给闭包,然后返回到这个。也许需要在 laravel 邮件文档中添加一些标志? 【参考方案1】:

如果您在函数之外实例化了$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 独有的。

【讨论】:

谢谢,我没有意识到你可以这样使用'use'。我只希望我能早点学会这一点。 还解决了我在 Laravel 5 中使用 Maill::queue 的问题 @DavidHyogo 我也是,很高兴找到这篇文章

以上是关于在 Laravel 4 中将数据传递给闭包的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Sql 行数据传递给 Vue 文件(Laravel 项目)

使用 jQuery post 使用 Laravel 将动态数据传递给引导模式

在 Symfony 2.8、3.0 及更高版本中将数据传递给 buildForm()

Laravel - 将自定义数据传递给电子邮件视图

将数据传递给 laravel 中的引导模式

在使用 Laravel 和 Vue 时,通过 Blade Views 将数据传递给 Vue 与使用 Axios 直接传递给 Vue Components 的优缺点是啥? [关闭]