CSS   发布时间:2022-04-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了templates – 将Twig块传递给嵌入式模板大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在一个纤薄的框架应用程序中使用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模板中一直通过扩展的event.phtml模板和嵌入的page.phtml模板获取重写的block2?

解决方法

你不能做这个.

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

大佬总结

以上是大佬教程为你收集整理的templates – 将Twig块传递给嵌入式模板全部内容,希望文章能够帮你解决templates – 将Twig块传递给嵌入式模板所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。