jury89
jury89

Reputation: 302

Symfony2: How to extend a Bundle?

If i have AlphaBunde that is parent of BetaBundle how can i extend a twig block without overriding the entire template?

How can i import the routes that exist only in BetaBundle?

Upvotes: 0

Views: 6587

Answers (2)

TroodoN-Mike
TroodoN-Mike

Reputation: 16165

If you want to use template from another bundle and you do not want to override whole template you use this:

// Your file in ProjectAplhaBundle index.html.twig

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

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

For routing from just BetaBundle remove all routes (routing.yml in app folder) and leave just one with something like this:

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

Then you specify all your routes in @ProjectBetaBundle/Resources/config/routing.yml

I hope that helps. Cheers

Upvotes: 0

Jakub Zalas
Jakub Zalas

Reputation: 36191

You cannot extend a block in Twig. You can overload it if you extend a template (and call parent() which kind of works as inheritance).

If you extend bundle you can overload its controllers or resources. I don't think you can really extend a template from a parent bundle because of how the paths are resolved. You can read more about it in the Extending a Bundle documentation chapter.

Also, How to use Bundle Inheritance to Override parts of a Bundle might clarify few things.

Remember to check Overriding Bundle Templates to learn how to overload templates in an application.

About routes: I think you'll have to define each route in your application's configuration file if you want to import them selectively.

Upvotes: 3

Related Questions