gpt4 book ai didi

symfony - 将 Twig 中的变量传递给包含的模板

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

我已经在单独的 Twig 模板中设置了导航菜单的呈现。原因是菜单是在应用程序的两个不同位置生成的。

现在我想给导航菜单一个参数,所以我知道从它生成的地方是这些一些小的差异。

我尝试了以下代码,但导航菜单模板中不知道该变量:

{% set menuType = 'user' %}
{% include 'MyBundle:nav.html.twig' with menuType %}

还试过:
{% include 'MyBundle:nav.html.twig' with {'menuType': 'user'} %}

在这两种情况下, Twig 都生成了 {{ menuType }} 不存在的错误?

最佳答案

令人惊讶的是,虽然我认为可以像您一样传递一个简单的变量,但似乎只接受数组作为传递的值。 (虽然 include doc 的两个例子是数组,但这并没有特别精确。)

在你的情况下,你必须这样写:

{% set menuType = 'user' %}
{% include 'MyBundle:nav.html.twig' with {menuType:menuType} only %}

备注 :我添加了 only关键字以禁用对上下文的访问。
没有它,您不需要将变量传递给包含的模板,因为它们可以访问它们。 (禁用它是一个好习惯。)

这是一个带有一些测试和转储的 Twigfiddle: https://twigfiddle.com/gtnqvv
{% set menuType = 'user' %}
{% set vars = {'foo': 'bar'} %}
{% set z = 'bob' %}

{# vars dumps ommitted here, see the fiddle. #}

{#% include '1.html.twig' with menuType only %#}
{% include '1.html.twig' with {menuType:menuType} only %}
{% include '2.html.twig' with vars only %}
{% include '3.html.twig' with {z:z} only %}
{#% include '3.html.twig' with z only %#}

如您所知,第一条和最后一条注释行不起作用,这是错误:

Uncaught TypeError: Argument 1 passed to Twig_Template::display() must be of the type array, string given



第二个如你所愿 ,你只需要把它变成一个数组。 (反正很奇怪)

第三行是来自 Twig doc 的测试,第四行是使用另一个变量名的测试,只是为了确定。

关于symfony - 将 Twig 中的变量传递给包含的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41624496/

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