Symfony2:如何扩展Bundle?

时间:2012-01-26 16:22:19

标签: symfony bundle extend

如果我AlphaBundeBetaBundle的父级,我如何在不覆盖整个模板的情况下扩展树枝块?

如何导入仅存在于BetaBundle

中的路线

2 个答案:

答案 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中指定所有路由

我希望有所帮助。干杯