在laravel中的函数内发送变量

时间:2015-01-20 09:47:52

标签: php email laravel laravel-4 function-parameter

是否可以获取存储在函数$string

之外的(For Mail)的值

我试过这里。

$string = str_random(5);     

Mail::send([], [], function($message,$string)
    {
        $user = MailTemplate::find(1);
        $mail_body = $user->MailContent;
        $mail_body = str_replace("{password}", $string, $mail_body);
        $message->setBody($mail_body, 'text/html');
        $message->to(Session::get('sess_mail'));
        $message->subject('Password Details - Ma$na Taxi');
    });

但它显示错误

Missing argument 2 for LoginController::{closure}()

如何在邮件函数中传递$ string的值,如

Mail::send([], [], function($message,$string)

所以应该可以在$mail_body = str_replace("{password}", $string, $mail_body);

访问它

1 个答案:

答案 0 :(得分:2)

您对静态方法Mail::send()的调用需要与此处指定的签名相匹配 - http://laravel.com/docs/4.2/mail#basic-usage

$string = str_random(5);     

Mail::send('name-of-view-used-for-email',
     array('foo' => $string), function($message) use ($string)
    {
        $user = MailTemplate::find(1);
        $mail_body = $user->MailContent;
        $mail_body = str_replace("{password}", $string, $mail_body);
        $message->setBody($mail_body, 'text/html');
        $message->to(Session::get('sess_mail'));
        $message->subject('Password Details - Ma$na Taxi');
    });
  

如何在邮件函数中传递$ string的值   它应该在$ mail_body = str_replace(" {password}",   $ string,$ mail_body);

你有一个范围问题 - 为了获得传递$ string,你需要在函数调用之前使用use ($string)
正如我在更新的代码中所示。