2012-08-09 73 views
0

正如標題所示,我想從表單中提取輸入以更改附件的名稱。爲swiftmailer附件動態獲取名稱

當我把這個:

->attach(Swift_Attachment::newInstance($pdf_content, '$post->name', 'application/pdf')) 

它不工作,但如果我叫出名字像這樣它的工作原理:

->attach(Swift_Attachment::newInstance($pdf_content, 'design.pdf', 'application/pdf')) 

任何想法?

+0

您是否嘗試過'$ post-> name'沒有引號? – Maerlyn 2012-08-09 20:04:29

+0

是的,我試過了。 – ehilse 2012-08-09 20:06:56

+2

不要在''''$ post-> name''那裏使用''' - 它不會將內容解析爲變量。驗證'$ post-> name'是你認爲它是通過'echo'它的第一個。 – Matt 2012-08-09 20:07:50

回答

0

這很可能是一個$post->name是不是你認爲它是,並且B)單引號搞亂你。

首先,驗證$post->name是一個字符串/文件名(如設計.pdf):

echo $post->name; 
exit(); 

然後,一旦你確定這是你期望它是,不要」牛逼路過的時候它變成一個函數使用單引號:

->attach(Swift_Attachment::newInstance($pdf_content, $post->name, 'application/pdf')) 

單引號包圍字符串由PHP從字面上看,因此,所有你傳遞作爲你的文件名是$post->name代替$post->name。如果要將字符串解析爲包含變量,請改爲使用雙引號(..., "$post->name", ...)或根本不使用引號(因爲沒有其他內容要傳遞到此處)。

+0

我嘗試使用單引號,並沒有工作。我也嘗試驗證$ post-> name是一個文件名,但它給了我一個錯誤。當我發送郵件時,我打電話給$ post->名字,但我不明白爲什麼它也不適用於附件。這裏是我如何做我的setTo ' - > setTo(array($ post-> email => $ post-> name,'[email protected]'=>'Eric'))//發送給' – ehilse 2012-08-09 20:24:19

+0

@ehilse ***什麼是錯誤?***這是**非常重要**。如果簡單地'echo'$ post-> name'會拋出一個錯誤,那告訴你什麼? – Matt 2012-08-09 20:24:58

+0

「預期標識符,但找到'$ post'而不是' – ehilse 2012-08-09 20:28:20