0

我想在渲染模板之前添加我的控制代码。

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

控制器:

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

我想在渲染模板之前添加其他变量。

4

2 回答 2

0

您可以覆盖Symfony\Bundle\FrameworkBundle\Controller\Controller::render控制器中的方法并传递其他变量或在那里或 Twig 中安排一些事件挂钩。

于 2012-11-06T18:01:01.467 回答
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>
于 2012-11-07T13:23:32.547 回答