2013-02-26 2 views
1

Я создаю систему меню, используя расширение Doctrine Tree, и я хочу создать расширение Twig для отображения меню на основе запрошенного родительского узла, например. {% display_menu(side_menu) %}. Эта функция будет в шаблоне базовой ветви (т. Е. Меню находится на каждой странице веб-сайта).Symfony2 Использование диспетчера сущностей в расширении Twig

Поскольку я буду хранить структуру меню с помощью Doctrine, мне показалось, что мне нужно получить доступ к MenuRepository в расширении Twig, поэтому первая проблема, с которой я столкнулся, заключалась в том, чтобы получить в нее Entity Manager. Когда вы ищете решение, fewpeople сказали, что это плохая практика, что имеет смысл, поскольку расширение Twig является частью View.

Так как решение проблемы (связанное в похожих вопросах) с моей проблемой, мой вопрос в том, есть ли способ, которым я могу это сделать, используя good Практика? Или есть лучший способ сделать это в первую очередь?

ответ

2

Создание сущностей, знакомых с любыми сервисами, включая менеджеров сущностей, является плохой практикой. Нет ничего плохого в том, чтобы вводить EM в расширение Twig. Хотя, я бы предпочел добавить диспетчер модели к расширению Twig, чтобы расширение не было известно о уровне персистентности - это задание уровня менеджера.

Итак, у меня будет MenuManager, который знает о репозиториях/сущности-менеджерах и вводит их в расширение.

+0

Благодарим за совет. Я буду использовать принятый ответ из [здесь] (http://stackoverflow.com/questions/8450465/fetching-data-through-a-custom-repository-in-a-twig-extension?rq=1) в этом дело. – Robin

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