2015-01-12 53 views
0

我想使用字符串作爲發送電子郵件的模板。有些是這樣的。symfony 2內部的字符串模板

$twig = new \Twig_Environment(new \Twig_Loader_String()); 
$rendered = $twig->render(
    "Test string template: {{ result }}", 
    array("result" => "Success!") 
); 

但是這不允許我使用Symfony擴展。我用Google搜索一下,我發現,更好的方法是使用類似

{{ include(template_from_string("Hello {{ name }}")) }} 

與服務配置像這個有點

acme.twig.extension.loader: 
class:  Twig_Extension_StringLoader 
tags: 
    - { name: 'twig.extension' } 

不過,我不能用我該如何使用這個extenstion即如何傳遞數據(數組)在這種情況下,以及在哪裏把這段代碼....在另一個模板?

能有人給我任何暗示,請...

+0

http://symfony.com/doc/current/cookbook/email/email.html - 你需要呈現一根樹枝temlate(在單獨的文件)例如:$這個 - >的RenderView( 「HelloBundle:您好:email.txt.twig', ['name'=> $ name] )與控制器。它會返回你呈現的模板。 –

+0

這對我不起作用。在我的情況下,模板的內容來自數據庫,並未保存在某個文件中,就像該示例所示。 – nicholasnet

+0

你確定它不允許你使用擴展嗎?所有實際的加載器(據我所知)是否將指定模板的內容加載到一個字符串中,然後返回該加載器。 – qooplmao

回答

0

你嘗試 「的RenderView」?

$emailBody = $this->renderView('TestBundle:Default:emailTemplate.html.twig', array(
    'result' => 'Success!' 
));