114

Laravel 4 で Mail クラスを使用しようとしていますが、変数を $m オブジェクトに渡すことができません。

$team オブジェクトには、雄弁で DB から取得したデータが含まれています。

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 に答える