Как мне объявить функцию, которая доступна глобально для всех шаблонов Twig в комплекте? - PullRequest
0 голосов
/ 01 апреля 2012

Мой вопрос довольно прост: как я могу написать функцию один раз и сделать ее доступной глобально для каждого шаблона Twig, который у меня есть в комплекте?

1 Ответ

2 голосов
/ 01 апреля 2012

Попробуйте воспроизвести более или менее следующий класс в 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) }} или любым другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...