2014-04-24 91 views
3

我用樹枝在我的Symfony2項目呈現模板表單變量:嫩枝串渲染和Symfony的擴展

$env = new \Twig_Environment(new \Twig_Loader_String()); 
$render = $env->render(
    $renderString, 
    $params 
); 

但是,當我試圖使用的Symfony樹枝功能(如「路徑」,「URL」 ,'資產','控制器'等),它會拋出異常「函數」路徑「不存在於......」。 有這種方法可以將此函數注入到Twig_Environment中?

回答

5

試試這個:

$twig = clone $this->get('twig'); 
$twig->setLoader(new \Twig_Loader_String()); 
$rendered = $twig->render(
    "Test string template: {{ result|humanize }}", 
    array("result" => "mega_success") 
); 

比照How to render a string as a Twig template in Symfony2

+0

我想知道克隆原始樹枝環境時是否有任何問題(如潛在的內存問題或原始環境中的奇怪副作用)? –

4

此方法無需克隆枝條環境:(在symfony的3測試)

$rendered = $this->get('twig')->createTemplate('Hi {{ name }}!')->render(['name' => 'simon']); 

Symfony的擴展名如path工作,如請求。

+0

這是一個更清潔的解決方案,因爲它不需要實例化其他對象,並且可以在服務中注入「樹枝」服務。可惜的是,沒有Twig_Environment類的接口。 – drakonli