gpt4 book ai didi

templates - 传递给嵌入模板的 Twig block

转载 作者:行者123 更新时间:2023-12-04 12:58:35 25 4
gpt4 key购买 nike

我在一个纤薄的框架应用程序中使用 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 %}

并且预期 block2 的覆盖内容会显示在由父模板嵌入的 page.phtml 模板中。我可以在父模板中输出 block2 的值并且它在那里,但在嵌入模板中它不是。我尝试明确地传递 event.phtml 中的块像这样嵌入
{%embed "page.phtml" %}
{% block block2 %}{{parent()}}{% endblock %}
...
{% endembed %}

但这没有任何区别。我如何从 custom_event.phtml 获取被覆盖的 block2模板一路通过扩展 event.phtml模板和嵌入 page.phtml模板?

最佳答案

你不可以做这个。
{% embed %}在技​​术上定义了一个新的(匿名)模板,它扩展了嵌入模板(这是它如何覆盖块)并包含在当前模板中。这实际上只是 {% include %} 的语法糖和 {% extends %}以避免必须将此部分模板存储在其自己的文件中并且只包含一次。
Twig 包含不能被子模板扩展。只有当前模板的块可用于扩展。和 event.phtml没有任何块。

关于templates - 传递给嵌入模板的 Twig block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20806243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com