2014-04-29 2 views
0

첨부 파일이있는 메일을 보내려면이 간단한 코드를 작성하고 있지만 파일 변수 경로를 전달할 수 없습니다. 나는 폐쇄 (위의 폐쇄에 $ 메시지와 함께 $ pathToVariable 추가) 변수를 전달하는 시도 또한Laravel Mail - PathToFile 변수를 찾을 수 없습니다.

Undefined variable: pathToFile 

을하지만, 다음과 같은 오류가 발생합니다 :

$pathToFile = "Sale-".$id.".csv"; 

Mail::send(array('html' => 'sales.invoice_template'), $data, function($message) 
     { 
      $message->to('[email protected]'); // dummy email 
      $message->attach($pathToFile); 
     }); 

위의 코드는 발생

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

기본적으로 클로저 외부의 변수는 식별하지 않습니다. 아무도 여기 좀 도와 줄래?

답변

4

당신이 시도 할 수 있습니다 지시 :

use ($pathToFile)

... 변수에서 클로저를 사용할 수 있습니다.

+0

우수, 많이 감사합니다 ..! –

0

클로저에서 $ pathToFile을 참조 할 때 스크립트는 $ pathToFile이 클로저 내에서 선언되도록합니다. 선언이 없으므로 정의되지 않은 변수 오류가 표시됩니다.

Any variable used inside a function is by default limited to the local function scope.

출처 : http://www.php.net/manual/en/language.variables.scope.php

이 문제를 해결하려면, 당신은 예를 들어, 귀하의 폐쇄에 $ pathToFile을 통과 할 수 있어야한다 :

$pathToFile = "Sale-".$id.".csv"; 

Mail::send(array('html' => 'sales.invoice_template'), $data, function($message) use ($pathToFile) 
{ 
    $message->to('[email protected]'); // dummy email 
    $message->attach($pathToFile); 
}); 

:

Mail::send(array('html' => 'sales.invoice_template'), $data, function($message, $pathToFile) 
    { 
     $message->to('[email protected]'); // dummy email 
     $message->attach($pathToFile); 
    }); 
+0

내가 이미 시도했는데 .. "SaleController :: {closure}()에 대한 인수 2가 없습니다"라는 오류가 있습니다 (질문을 업데이트 할 것입니다) –

관련 문제