2012-03-07 10 views
1

У меня есть уже работает расширение Twig в моем Symfony2 приложение:Symfony2: Как вынести частичное в расширение Twig

namespace Company\MyBundle\Service; 

class MyExtension extends \Twig_Extension 
{ 
    // ... 
} 

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

Вот мой текущий конфиг:

services: 
    twig.extension.my_extensions: 
     class: Company\MyBundle\Service\TwigExtension 
     tags: 
      - { name: twig.extension } 

Если я теперь добавить arguments: [@templating] к конфигурации, я получаю (понятное) круговое эталонное исключение.

+0

Я не знаю, возможно ли это, но вы можете попытаться изменить масштаб шаблона для прототипа, чтобы всегда был введен новый объект. Подробнее см. Здесь: http://symfony.com/doc/2.0/cookbook/service_container/scopes.html – Sgoettschkes

ответ

1

Кажется, что один из рекомендуемых simple ways предназначен для непосредственного впрыска контейнера и получения от него шаблонного двигателя. Как вы видели, впрыскивание в механизм шаблонов напрямую вызывает циклическое исключение ссылки.

Итак, введите @service_container, и вам должно быть хорошо. Это, по-видимому, подход, применяемый связями, такими как FOSFacebookBundle.

+0

Ницца, работает как шарм. Благодаря! – apfelbox

+0

@apfelbox без проблем :-) – richsage

Смежные вопросы