8

私はLaravelを初めて使用するので、ここに何かが欠けている場合はお詫びしますが、メール受信者を定義するために Mail::send() メソッドにクロージャーを送信すると、メールアドレスがグローバルスコープで利用可能であれば問題なく動作します。これ:

Mail::send('frontend.emails.default', $data, function($message) 
{
    $message->to(Input::get('email'))->subject('Hi');
});

しかし、呼び出し元のメソッドにスコープされた値を渡すにはどうすればよいでしょうか? 例えば:

$user = User::find($id);

Mail::send('frontend.emails.default', $data, function($message) 
{
    $message->to($user->email)->subject('Hi');
});

$data 配列に追加しようとしましたが、それはビューで使用されており、コールバックでは使用できません。

ご協力いただきありがとうございます。

4

1 に答える 1

46

PHP には、変数を現在のスコープからクロージャーに渡すことができる機能が少し文書化されています。要するに、あなたはする必要がありuse ($user)ます...

$user = User::find($id);

Mail::send('frontend.emails.default', $data, function($message) use ($user)
{
    $message->to($user->email)->subject('Hi');
});
于 2013-05-29T08:45:59.947 に答える