Twig模板parent()导致双父块

时间:2016-02-08 16:33:42

标签: symfony templates twig

我有base.html.twig template.html.twigdashboard.html.twig。 仪表板扩展了扩展基础的模板。

基地:

{% block javascripts %} 
    <script src="1.js"></script> 
{% endblock %}

模板:

{% block javascripts %} 
    {{ parent() }}
    <script src="2.js"></script>
{% endblock %}

控制板:

{% block javascripts %}
    {{ parent() }}
    <script src="3.js"></script>
{% endblock %}

此模板设置导致冗余脚本标记,其中所有内容都加倍,如此

<script src="1.js"></script>
<script src="2.js"></script>
<script src="3.js"></script>
<script src="1.js"></script>
<script src="2.js"></script>
<script src="3.js"></script>

我错过了什么吗?为什么会这样?

EDIT1:

base.html.twig:

extends nothing

template.html.twig:

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

默认/ dashboard.html.twig:

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

2 个答案:

答案 0 :(得分:0)

在我看来,你的{% extends "file" %}很糟糕。

修复:

模板:

{% extends "base_path" %}
{% block javascripts %} 
    {{ parent() }}
    <script src="2.js"></script>
{% endblock %}

仪表板:

{% extends "template_path" %}
{% block javascripts %}
    {{ parent() }}
    <script src="3.js"></script>
{% endblock %}

答案 1 :(得分:0)

有点晚了但由于还没有接受答案,我还是试一试。

我遇到了同样的事情,这解决了我,在我的情况下,它与基本模板的结构和你尝试扩展基本文件的当前模板有关,在我的情况下就我所知,你的代码与你的情况类似。

本例中的结构基本上是错误的:

<强>碱

{% block notAddedInTemplate %}
    {% block javascripts %} 
        <script src="1.js"></script> 
    {% endblock javascripts%}
{% endblock notAddedInTemplate %}

<强>模板:

{% extends 'base.html.twig' %}
{% block javascripts %} 
    {{ parent() }}
    <script src="2.js"></script>
{% endblock javascripts%}

应该是:

<强>碱

{% block notAddedInTemplate %}
    {% block javascripts %} 
        <script src="1.js"></script> 
    {% endblock javascripts%}
{% endblock notAddedInTemplate %}

<强>模板:

{% extends 'base.html.twig' %}
    {% block notAddedInTemplate %}
        {% block javascripts %} 
        {{ parent() }}
        <script src="2.js"></script>
    {% endblock notAddedInTemplate %}

我希望这可以帮助您解决问题。