如果我AlphaBunde
是BetaBundle
的父级,我如何在不覆盖整个模板的情况下扩展树枝块?
如何导入仅存在于BetaBundle
?
答案 0 :(得分:3)
您无法在Twig中扩展块。如果扩展模板(并调用parent()哪种工作作为继承),您可以重载它。
如果扩展bundle,则可以使其控制器或资源过载。我认为你不能真正从父包中扩展模板,因为路径是如何解析的。您可以在Extending a Bundle文档章节中阅读更多相关信息。
此外,How to use Bundle Inheritance to Override parts of a Bundle可能会澄清一些事情。
请务必检查Overriding Bundle Templates以了解如何在应用程序中重载模板。
关于路由:如果您想有选择地导入它们,我认为您必须在应用程序的配置文件中定义每个路由。
答案 1 :(得分:0)
如果您想使用其他捆绑包中的模板而您不想覆盖整个模板,请使用以下命令:
// Your file in ProjectAplhaBundle index.html.twig
{% extends "ProjectBetaBundle::layout.html.twig" %}
{% block content %}
{{ parent() }}
Somethings added to the existing content
{% endblock %}
对于仅从BetaBundle路由,删除所有路由(app文件夹中的routing.yml),只留下一个类似的东西:
ProjectBetaBundle:
resource: "@ProjectBetaBundle/Resources/config/routing.yml"
prefix: /
然后在@ ProjectBetaBundle / Resources / config / routing.yml中指定所有路由
我希望有所帮助。干杯