我一直在关注文档,教程和一些YouTube视频,我永远无法获得块嵌套和“扩展”工作。除此之外,木材似乎正常运作。
在views文件夹中,我有以下两个文件:
base.twig
test.twig
base.twig 中的
{% block content %}
........
{% endblock %}
test.twig 中的
{% extends "base.twig" %}
{% block content %}
This is a test
{% endblock %}
从我一直关注的,代码是正确的,我应该得到“这是一个测试”的输出,对吧?但相反,我仍然得到“.....”。
---- ---- EDIT
好的,我想出了一些问题,在我的php文件中,我正在渲染base.twig。哪个显然没有做任何关联test.twig。因此,当我渲染test.twig时,我得到了我正在寻找的行为。
然而,这并没有解释如何进行多个块嵌套...我可以在同一个块中嵌套多个深的文件..但是如果你有两个独立的块,那该怎么办?相同的枝条文件?处理多个块的方法是什么?我无法找到有关该案例或任何案例的文档。
答案 0 :(得分:2)
我认为你可能会对阻碍和扩展工作感到困惑......
如果您真的希望看到这方面的好例子,请查看Timber Starter theme并查看它们提供的各种.twig文件。如果您正在使用Timber构建网站,我强烈建议您使用此主题开始。
关于你的最新评论(我没有足够的代表评论,否则我会),这个例子有一个block head
& block footer
内的base.twig
。因此,当您在新的twig文件中扩展此base.twig
文件时,请说:home.twig
例如:
{% block head %}
This is your home.twig head content, which will replace base.twig content
{% endblock %}
{% block footer %}
This is your home.twig footer content, which will replace base.twig content
{% endblock %}
所以在你的base.twig中,这些块是动态占位符。当你扩展base.twig并在这些块中添加新内容时,它们会替换base.twig中的内容。
据我所知,您一次只能扩展一个文件。您可以自定义和创建任意数量的布局,然后扩展它们。因此,您可能有一个基本布局,您可以为大多数页面扩展。但是,您可能需要另一个带侧边栏的布局,您可以在需要侧边栏的页面上进行扩展。您可以为站点的电子商务部分创建另一个布局等。重点是通过遵循DRY原则使您不必跨页面复制一堆代码。
我希望这是有道理的,如果没有,请告诉我,我将非常乐意为您提供帮助。