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 回答