2015-01-20 3 views
1

에서 함수 내부 변수를 전달하는 것이 가능 해봤 함수 여기 (For Mail)laravel

외부에 저장되는 $string의 값을 취득한다.

$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}() 

오류가 어떻게 그래서 $mail_body = str_replace("{password}", $string, $mail_body);

답변

2

에 액세스 할 수 있어야합니다

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

같은 메일 함수 내에서 $ 문자열의 값을 전달할 수 있습니다 보여줍니다 정적 메소드 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'); 
    }); 

어떻게 내가 ("{암호}"은 $ mail_body = 않는 str_replace을에 액세스 할 수 있어야합니다 그래서 같은 메일 함수 내에서 $ 문자열의 값을 전달할 수 $ 문자열 $ mail_body);

당신은 함수 호출 전에 use ($string)을 사용해야하는 범위 $ 문자열을 얻기 위해 범위 문제가 있습니다.
업데이트 된 코드에서 알 수 있습니다.

+0

감사합니다. $ string1, $ string2를 사용해야 할 경우'array ('foo'=> $ string, 'foo1'=> $ string1, 'foo2'=> $ string2), function ($ 메시지) use ($ string, $ string1, $ string2)'이처럼? – AngularAngularAngular

+0

(전자 메일보기로 블레이드를 사용한다고 가정) 배열에서 전달하는 내용은'email.blade.php'에서 {{$ foo}} {{$ foo1}} ' –

+0

'으로 액세스 할 수 있습니다 ($ string , $ string1, $ string2)'함수 안에있는 변수들에 접근하고 싶을 때만 필요합니다'Mail :: send (.... function() {$ string, $ string1, $ string2})' –