包括扩展的Twig模板

时间:2016-02-26 10:48:02

标签: symfony twig

我正在渲染Twig模板,如下所示:

$this->render('base.html.twig');

Twig模板的内容(简化)如下所示:

{% block headers %}
...
{% endblock %}
{% block pagecontent %}
...

    {# I want to include another template (A) here #}
    {# I want to include another template (B) here #}

{% endblock %}
{% block footers %}
...
{% endblock %}

我有另一个Twig模板,我没有渲染,但我想要包含在上面的模板中(我放置了Twig评论)。内容如下:

{% extends '::base' %}
{% block headers %}
{{ parent() }}
{% endblock %}
{% block pagecontent %}
{{ parent() }}
...
{% endblock %}

我想最终在Twig内呈现多个base.html.twig模板。

我试图做的是否可以实现,如果是,我该如何实现呢?

2 个答案:

答案 0 :(得分:3)

您只需渲染子模板(扩展base.html.twig的模板)。

控制器更改:

$this->render('child_template_extending_base.html.twig');

child_template_extending_base替换为您的真实模板名称。

您还可以使用以下代码embed模板中的其他控制器视图:

{{ render(controller(
    'AppBundle:Article:recentArticles',
    { 'max': 3 }
)) }}

在此处详细了解此功能:http://symfony.com/doc/current/book/templating.html#embedding-controllers

答案 1 :(得分:0)

base.html.twig

jQuery.sap.log.*

你的控制器:

{% block headers %}
...
{% endblock %}
{% block pagecontent %}
...

{# I want to include another template (A) here #}
{# I want to include another template (B) here #}

{% endblock %}
{% block footers %}
...
{% endblock %}

通常,$ this->渲染(' view.html.twig');只接受一根树枝。 如果您想拥有多个模板,可以像这样构建:

view.html.twig

$this->render('base.html.twig');

另一个可能的解决方案是: 你可以把一个街区分成几个街区。