2012-01-26 1 views
0

Если у меня есть AlphaBunde, который является родителем BetaBundle, как я могу расширить блок ветви без переопределения всего шаблона?Symfony2: Как продлить пакет?

Как я могу импортировать маршруты, которые существуют только в BetaBundle?

ответ

3

Вы не можете расширить блок в Twig. Вы можете перегрузить его, если вы расширяете шаблон (и вызываете parent(), который работает как наследование).

Если вы удлиняете комплект, вы можете перегрузить его контроллеры или ресурсы. Я не думаю, что вы действительно можете расширить шаблон из родительского пакета из-за того, как разрешены пути. Подробнее об этом вы можете прочитать в главе документации Extending a Bundle.

Также How to use Bundle Inheritance to Override parts of a Bundle может прояснить некоторые вещи.

Не забудьте проверить Overriding Bundle Templates, чтобы узнать, как перегружать шаблоны в приложении.

О маршрутах: Я думаю, вам нужно будет определить каждый маршрут в конфигурационном файле приложения, если вы хотите их выборочно импортировать.

0

Если вы хотите использовать шаблон из другого пучка, и вы не хотите, чтобы переопределить весь шаблон использовать это:

// Your file in ProjectAplhaBundle index.html.twig 

{% extends "ProjectBetaBundle::layout.html.twig" %} 

{% block content %} 
    {{ parent() }} 
    Somethings added to the existing content  
{% endblock %} 

Для маршрутизации от всего BetaBundle удалить все маршруты (routing.yml в папке приложения) и оставить только один с чем-то вроде этого:

ProjectBetaBundle: 
    resource: "@ProjectBetaBundle/Resources/config/routing.yml" 
    prefix: /

Затем вы указываете все ваши маршруты в @ ProjectBetaBundle/Ресурсы/конфигурации/routing.yml

Я надеюсь, что помогает. Cheers

+1

Я знаю, что обычно я могу использовать эти команды, но у моей BetaBundle есть функция getParent() ', и я не могу использовать ' {% extend "AlphaBundle :: layout.html.twig"% } ' в' BetaBundle', потому что он генерирует цикл. – jury89

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

  • Нет связанных вопросов^_^