Если у меня есть AlphaBunde
, который является родителем BetaBundle
, как я могу расширить блок ветви без переопределения всего шаблона?Symfony2: Как продлить пакет?
Как я могу импортировать маршруты, которые существуют только в BetaBundle
?
Если у меня есть AlphaBunde
, который является родителем BetaBundle
, как я могу расширить блок ветви без переопределения всего шаблона?Symfony2: Как продлить пакет?
Как я могу импортировать маршруты, которые существуют только в BetaBundle
?
Вы не можете расширить блок в Twig. Вы можете перегрузить его, если вы расширяете шаблон (и вызываете parent(), который работает как наследование).
Если вы удлиняете комплект, вы можете перегрузить его контроллеры или ресурсы. Я не думаю, что вы действительно можете расширить шаблон из родительского пакета из-за того, как разрешены пути. Подробнее об этом вы можете прочитать в главе документации Extending a Bundle.
Также How to use Bundle Inheritance to Override parts of a Bundle может прояснить некоторые вещи.
Не забудьте проверить Overriding Bundle Templates, чтобы узнать, как перегружать шаблоны в приложении.
О маршрутах: Я думаю, вам нужно будет определить каждый маршрут в конфигурационном файле приложения, если вы хотите их выборочно импортировать.
Если вы хотите использовать шаблон из другого пучка, и вы не хотите, чтобы переопределить весь шаблон использовать это:
// 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
Я знаю, что обычно я могу использовать эти команды, но у моей BetaBundle есть функция getParent() ', и я не могу использовать ' {% extend "AlphaBundle :: layout.html.twig"% } ' в' BetaBundle', потому что он генерирует цикл. – jury89