Twig 简单覆盖包含
Twig simple overriding with include
我有一个简单的 Twig 模板,我想覆盖 include 中的块吗?
base.html.twig
:
{% block razem %}
{% include '_ga.code.html.twig' %}
{% endblock %}
_ga.code.html.twig
:
{% block wspolny %}
should be common
{% endblock %}
{% block googleAnalitics %}
for overridden
{% endblock %}
success.html.twig
{% extends 'base.hmtl.twig' %}
{% block razem %}
{{ parent('wspolny') }}
{% block googleAnalitics %}
overriding part
{% endblock %}
{% endblock %}
哪里出错了? http://twigfiddle.com/jsuk6a
我希望渲染这样的东西:
should be common
overriding part
在 twig 中,您不能覆盖 include 中的块。为此,您必须使用嵌入,但必须在使用模板中执行此操作,而不是在基础模板中执行此操作。
base.html.twig
:
{% block razem %}{% endblock %}
_ga.code.html.twig
:
{% block wspolny %}
should be common
{% endblock %}
{% block googleAnalitics %}
for overridden
{% endblock %}
success.html.twig
{% extends 'base.hmtl.twig' %}
{% block razem %}
{% embed '_ga.code.html.twig' %}
{% block googleAnalitics %}
overriding part
{% endblock %}
{% endembed %}
{% endblock %}
我认为 覆盖 一个块并重用其他块的最佳方法是扩展要执行覆盖的基本模板(可能添加一些代码到 pre -现有的)并应用所谓的 horizontal reuse:
Horizontal reuse is an advanced Twig feature that is hardly ever needed in regular templates. It is mainly used by projects that need to make template blocks reusable without using inheritance.
从那时起,您应该简单地使用 base.html.twig
模板并按如下方式扩展 _ga.code.html.twig
:
success.html.twig
{% extends '_ga.code.hmtl.twig' %}
{# Simply use base - without overriding #}
{% use 'base.hmtl.twig' %}
{% block googleAnalitics %}
overriding part
{% endblock %}
如果你想对单个块进行重载,你也可以使用parent()
函数;因此,您可以将一些其他信息添加到扩展块中。
如果您需要更复杂的东西,您应该选择 dynamic inheritance。
{% extends ['base.html.twig', '_ga.code.html.twig'] %}
我有一个简单的 Twig 模板,我想覆盖 include 中的块吗?
base.html.twig
:
{% block razem %}
{% include '_ga.code.html.twig' %}
{% endblock %}
_ga.code.html.twig
:
{% block wspolny %}
should be common
{% endblock %}
{% block googleAnalitics %}
for overridden
{% endblock %}
success.html.twig
{% extends 'base.hmtl.twig' %}
{% block razem %}
{{ parent('wspolny') }}
{% block googleAnalitics %}
overriding part
{% endblock %}
{% endblock %}
哪里出错了? http://twigfiddle.com/jsuk6a
我希望渲染这样的东西:
should be common
overriding part
在 twig 中,您不能覆盖 include 中的块。为此,您必须使用嵌入,但必须在使用模板中执行此操作,而不是在基础模板中执行此操作。
base.html.twig
:
{% block razem %}{% endblock %}
_ga.code.html.twig
:
{% block wspolny %}
should be common
{% endblock %}
{% block googleAnalitics %}
for overridden
{% endblock %}
success.html.twig
{% extends 'base.hmtl.twig' %}
{% block razem %}
{% embed '_ga.code.html.twig' %}
{% block googleAnalitics %}
overriding part
{% endblock %}
{% endembed %}
{% endblock %}
我认为 覆盖 一个块并重用其他块的最佳方法是扩展要执行覆盖的基本模板(可能添加一些代码到 pre -现有的)并应用所谓的 horizontal reuse:
Horizontal reuse is an advanced Twig feature that is hardly ever needed in regular templates. It is mainly used by projects that need to make template blocks reusable without using inheritance.
从那时起,您应该简单地使用 base.html.twig
模板并按如下方式扩展 _ga.code.html.twig
:
success.html.twig
{% extends '_ga.code.hmtl.twig' %}
{# Simply use base - without overriding #}
{% use 'base.hmtl.twig' %}
{% block googleAnalitics %}
overriding part
{% endblock %}
如果你想对单个块进行重载,你也可以使用parent()
函数;因此,您可以将一些其他信息添加到扩展块中。
如果您需要更复杂的东西,您应该选择 dynamic inheritance。
{% extends ['base.html.twig', '_ga.code.html.twig'] %}