我想在渲染模板之前添加我的控制代碼。如何在symfony 2.1中添加一些事件到樹枝
例子: 有模板: user.html.twig
控制器:
return $this->render('....:user.html.twig', array(/* variables */))
我想呈現模板之前添加其他變量。
我想在渲染模板之前添加我的控制代碼。如何在symfony 2.1中添加一些事件到樹枝
例子: 有模板: user.html.twig
控制器:
return $this->render('....:user.html.twig', array(/* variables */))
我想呈現模板之前添加其他變量。
解決此問題的方法:
創建新的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>
您可以在控制器中覆蓋Symfony\Bundle\FrameworkBundle\Controller\Controller::render
方法並傳遞其他變量或在此處或Twig中安排一些事件掛鉤。
這是個壞主意((如果使用這個解決方案,比我必須每個控制器都擴展到基礎控制器 – ZhukV
我不明白你的問題,你能說清楚嗎? – Maerlyn
我想在渲染模板之前添加其他變量。例如:自動添加到所有模板我的服務變量。 – ZhukV