当前位置:  开发笔记 > 前端 > 正文

将树枝中的变量传递给包含的模板

如何解决《将树枝中的变量传递给包含的模板》经验,为你挑选了1个好方法。

我已经将导航菜单的渲染设置为单独的树枝模板。原因是菜单是在应用程序的两个不同位置生成的。

现在,我想给导航菜单提供一个参数,以便我知道从哪里生成的这些细微差别。

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

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

还尝试了:

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

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



1> Veve..:

令人惊讶的是,尽管我认为可以像您一样传递一个简单的变量,但似乎只有数组被接受为传递的值。(虽然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 %#}

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

未捕获的TypeError:传递给Twig_Template :: display()的参数1必须为数组类型,给定字符串

第二个可以根据需要工作,只需将其设置为数组即可。(反正很奇怪)

第三行是来自Twig文档的测试,第四行是使用另一个变量名的测试,请确保。

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有