user1433416
user1433416

Reputation: 23

is it possible in symfony2 to extend 2 templates?

I'm thinking to organize my base layout in symfony2 containing only 3 blocks: header, content, and footer. And I want to have one template for each block. The "content" template will be a template that will be empty, showing only the templates for every section, following the "3 levels" directives. But I don't know how to include the header and footer template. I've done it creating "by pass" templates, so, for example, content extends footer, footer extends header, and header extends base, but it looks very bad. Thanks.

Upvotes: 0

Views: 1889

Answers (2)

Samy Dindane
Samy Dindane

Reputation: 18706

You can't extend more than one template in Twig, it is illogical anyway.
You should use include, which is a bit different.

The common way is to have one base template, which will be extended by all the other ones, except the header and the footer that will be included in it.

base.html.twig:

...
<body>
    {% include '::header.html.twig' %}
    {% block body %}{% endblock %}
    {% include '::footer.html.twig' %}
</body>
...

In the other templates, your bundles' views for example:

{% extends '::base.html.twig' %}

{% block body %}
Hello world!
{% endblock %}

Upvotes: 3

a.aitboudad
a.aitboudad

Reputation: 4092

you can use the embed tag, that combines the behaviour of include and extends. It allows you to include another template's contents, just like include does. But it also allows you to override any block defined inside the included template, like when extending a template, but version 1.8 is required

The embed tag

Upvotes: 4

Related Questions