如何在捆绑包中的所有Twig模板中声明全局可用的功能?

时间:2012-03-31 20:33:33

标签: php symfony twig

我的问题很简单:如何编写一个函数并使其在我的捆绑包中的每个Twig模板中全局可用?

1 个答案:

答案 0 :(得分:2)

尝试在Bundle \ Twig \ Extensions

中或多或少地重现以下类
class LabelsExtension extends \Twig_Extension
{

   function getName()
   {
      return 'labels';
   }

   function getFunctions()
   {
      return array(
          'perso_label' => new \Twig_Function_Method($this, 'persoLabel')
      );
   }
   function persoLabel($value)
   {
      if ($value == 1) return 'HI';
   }
}

然后在你的config.yml或services.yml中,你需要有这样的东西:

services:
    twig.extension.mynamespace.labels:
        class: Namespace\Bundle\Twig\Extension\LabelsExtension
        tags:
            - { name: 'twig.extension' }

现在,您可以使用{{ perso_label(1) }}或其他任何模板在任何模板中调用它。