我在一个slim框架应用中使用twig模板。我有一个名为page.phtml
的模板,它对数据数组进行分页,并有一些子块可供覆盖每个具体元素的细节,例如对用户、事件、订单等进行分页。
page.phtml
<div class="page">
{% block block1 %}default content{% endblock %}
<ul>
...
</ul>
{% block block2 %}{% endblock %}
</div>
我有一个 event.phtml
模板,它嵌入了 page.phtml
并向页面添加了一些其他内容;它还覆盖了默认页面的 block1 内容。
event.phtml
<html>
<body>
<h1>Event Page</h1>
{% embed "page.phtml" %}
{% block block1 %}event page content{% endblock %}
{% endembed %}
</body>
</html>
我有一个自定义事件页面,只需要修改事件页面的几个块,所以我像这样扩展了event.phtml
:
custom_event.phtml
{% extends "event.phtml" %}
{% block block2 %}overridden value{% endblock %}
我希望在父模板中嵌入的page.phtml模板中能够展示block2的覆盖内容。在父模板中,我可以输出block2的值,但在嵌入的模板中却没有显示。我尝试在嵌入代码event.phtml
中显式传递该块,如下所示:
{%embed "page.phtml" %}
{% block block2 %}{{parent()}}{% endblock %}
...
{% endembed %}
但这没有任何区别。我该如何从custom_event.phtml
模板中获取被覆盖的block2,并将其传递到扩展的event.phtml
模板以及嵌入的page.phtml
模板中?
{% block block2 %}{{ block("block2") }}{% endblock %}
- Nathan Arthur