2014-04-29 35 views
0

我正在編寫這個簡單的代碼來發送附件的郵件,但是,我無法將路徑傳遞給文件變量。Laravel Mail - PathToFile變量未找到

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

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

上面代碼拋出:

Undefined variable: pathToFile 

此外,我試圖傳遞變量(加入$ pathToVariable與上述閉合$消息)發送到閉合但將以下錯誤:

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

它基本上不識別閉包外的任何變量。任何人都可以請幫我在這裏?

回答

4

你可以試試這個:

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

說明書:

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傳遞到您的關閉,如:

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

忘了提及,我已經試過了..它給「SaleController :: {closure}()缺少參數2」錯誤(我將更新問題) –