为什么在博尔特CMS模板获取数据时
问题描述:
在树枝博尔特CMS模板,我试图通过从表Pillars
获取数据创建没有重复的值数组如下没有形成一个索引数组:为什么在博尔特CMS模板获取数据时
{% set arr = [] %}
{% setcontent pillars = 'Pillars' %}
{% for pillar in pillars %}
{% if pillar.title not in arr %}
{% set arr = arr|merge([pillar.title]) %}
{% endif %}
{% endfor %}
{{ dump(arr) }}
if
条件似乎不起作用,因为arr
不是索引数组。我希望从{{ dump(arr) }}
得到以下结果(例如):
array:3 [▼
0 => "Cash Transfer"
1 => "Human Resource"
2 => "ICT Services"
]
而是我得到如下,以不去除重复Human Resource
值:
array:5 [▼
0 => Twig_Markup {#4297 ▼
#content: "Cash Transfer"
#charset: "UTF-8"
}
1 => Twig_Markup {#4294 ▼
#content: "Human Resource"
#charset: "UTF-8"
}
2 => Twig_Markup {#4530 ▼
#content: "ICT Services"
#charset: "UTF-8"
}
3 => Twig_Markup {#4527 ▼
#content: "Human Resource"
#charset: "UTF-8"
}
4 => Twig_Markup {#4523 ▼
#content: "Human Resource"
#charset: "UTF-8"
}
]
可能是什么问题,或者我可能做错了什么?
答
在尝试真正的额外努力之后,我设法通过在值“强制”它成为一个字符串之前使用空字符串(两个单引号)来解决问题。这是解决方案,将来可能会为某人节省几个小时的试用时间。
{% set arr = [] %}
{% setcontent pillars = 'Pillars' %}
{% for pillar in pillars %}
{% set str = ''~pillar.title %}
{% if str not in arr %}
{% set arr = arr|merge([str]) %}
{% endif %}
{% endfor %}
{{ dump(arr) }}
替代方案,欢迎
构建指数是没有错的其实。 'Twig_Markup'类只是让内部的内容被视为安全。你可以做'{{arr [1]}}'并输出'人力资源'。你找到的解决方案将工作,但会逃离“HTML” – DarkBee