Я пытаюсь активировать расширение Twig StringLoader в проекте Symfony 2.3, но просто не могу правильно использовать yaml-синтаксис.
Это сообщение относится к ответу Heyflynn на сообщение, посвященное той же самой проблеме, но предоставляющее решение, которое просто не работает (для меня).
Написание следующих строк в моем приложении / config / config.yml просто дает мне исключение:
# app/config/config.yml acme.twig.extension.loader: class: Twig_Extension_StringLoader tags: - { name: 'twig.extension' }
Дает мне это:
FileLoaderLoadException: невозможно импортировать ресурс «… / app / config / config.yml» из «… / app / config / config_dev.yml». (Нет расширения, которое может загрузить конфигурацию для «acme.twig.extension.loader» (в … / app / config / config.yml). Посмотрел на пространство имен «acme.twig.extension.loader», рамки »,« безопасность »,« веточка »,« монологи »,« swiftmailer »,« assetic »,« doctrine »,« sensio_framework_extra »,« apy_data_grid »,« project »,« acme_demo »,« web_profiler »,« sensio_distribution », )
(Я уже интересовался появлением acme в acme.twig.extension.loader и заменил его именем пакета проекта, но это снова дает мне одно и то же исключение. Просто отключить его тоже не работает).
Пожалуйста помоги!
Twig не является частью пакета acme, Twig – это комплект поставщика, и поэтому ошибка правильная. Существует не такое пространство имен, как acme.twig.extension.loader
Фиксированный код:
# services.yml services: twig.extension.stringloader: class: Twig_Extension_StringLoader tags: - { name: twig.extension }
Это можно добавить в /app/config/config.yml
для использования в каждом комплекте или добавить его в папку пакета в /Resources/config/services.yml
чтобы использовать его только в определенном пакете.
Затем в шаблонах twig используйте их как:
{{ include(template_from_string(page.template)) }}
Вышеупомянутое работает для меня в Symfony v2.5