2012-11-04 75 views
0

我想在渲染模板之前添加我的控制代碼。如何在symfony 2.1中添加一些事件到樹枝

例子: 有模板: user.html.twig

控制器:

return $this->render('....:user.html.twig', array(/* variables */)) 

我想呈現模板之前添加其他變量。

+0

我不明白你的問題,你能說清楚嗎? – Maerlyn

+0

我想在渲染模板之前添加其他變量。例如:自動添加到所有模板我的服務變量。 – ZhukV

回答

0

解決此問題的方法:

創建新的Twig擴展並註冊該擴展。

實施例:

枝條延長:

class UserExtension extends \Twig_Extension 
{ 
    /** 
    * Get globals variables 
    * 
    * @return array 
    */ 
    public function getGlobals() 
    { 
    return array(
     // Other variables 
    ); 
    } 
} 

註冊擴展作爲服務。

<service id="sps.twig.user_extension" class="SPS\Bundles\HomeBundle\Twig\Extensions\UserExtension"> 
    <tag name="twig.extension" /> 
</service> 
0

您可以在控制器中覆蓋Symfony\Bundle\FrameworkBundle\Controller\Controller::render方法並傳遞其他變量或在此處或Twig中安排一些事件掛鉤。

+0

這是個壞主意((如果使用這個解決方案,比我必須每個控制器都擴展到基礎控制器 – ZhukV