Расширение Twig будет доступно в новой среде Twig_Environment

Я использую Symfony 2/Twig. У меня есть расширение Twig, которое, среди прочего, перегружает фильтр даты для вывода пользовательских форматов даты на основе предпочтений пользователя.

приложение/config/services.yml:

twig.extension.static:
    class: %twig_static_extension%  # set elsewhere
    tags:
        - { name: twig.extension }

Мне нужно инициализировать новую среду Twig_Environment, чтобы отображать шаблоны из базы данных:

контроллер:

$env = new \Twig_Environment(new \Twig_Loader_String());

Но я обнаружил, что эта новая среда не включает расширение автоматически.

Естественно, я могу загрузить его так:

$env->addExtension(new FQCN\To\StaticExtension());

Могу ли я что-то сделать, чтобы сделать расширение доступным для всех используемых сред Twig?


person ncatnow    schedule 05.05.2013    source источник
comment
Вам действительно нужно перегружать фильтр даты? Так просто создать новый фильтр с Symfony2, не утруждайте себя такими сложными вещами :)   -  person Alain Tiemblo    schedule 05.05.2013
comment
У меня не было никаких проблем с самим расширением. Я не слишком хорошо сформулировал вопрос. Я ожидаю, что любое расширение Twig, определенное как служба, должно быть доступно при создании нового экземпляра Twig_Environment, но я обнаружил, что это не так.   -  person ncatnow    schedule 06.05.2013
comment
В Symfony2 вам не нужно заботиться о Twig_Environment, ваши сервисы инициализируются сзади, и вы используете среду как сервис в области действия контейнера. Если вы визуализируете строки ветки из базы данных, вы можете использовать twigstringbundle   -  person Alain Tiemblo    schedule 06.05.2013
comment
Спасибо за ваши комментарии Нинсуо. Я предполагаю, что вы говорите тогда, что любые расширения, определенные в конфигурации службы, будут применяться только к Twig_Environment по умолчанию, который инициализируется Symfony2, а не к каким-либо другим Twig_Environment, которые могут использоваться. Я не хотел реализовывать пакет для того, что казалось простым требованием. Может зарегистрировать проблему в репозитории Twig. Ваше здоровье!   -  person ncatnow    schedule 07.05.2013
comment
Родной способ создания представлений из строк должен быть превосходным в сочетании с песочницей, чтобы предлагать пользователям сайта создавать свои собственные шаблоны и генерировать вещи без управления файлами. Но если мы посмотрим на то, как Twig работает внутри, это не имеет особого смысла.   -  person Alain Tiemblo    schedule 07.05.2013


Ответы (1)


Вы можете создать пропуск компилятора и внедрить его в свой пакет. ">TwigEnvironmentPass из TwigBundle

person quaninte    schedule 02.10.2014