为什么在博尔特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" 
    } 
] 

可能是什么问题,或者我可能做错了什么?

+0

构建指数是没有错的其实。 'Twig_Markup'类只是让内部的内容被视为安全。你可以做'{{arr [1]}}'并输出'人力资源'。你找到的解决方案将工作,但会逃离“HTML” – DarkBee

在尝试真正的额外努力之后,我设法通过在值“强制”它成为一个字符串之前使用空字符串(两个单引号)来解决问题。这是解决方案,将来可能会为某人节省几个小时的试用时间。

{% 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) }} 

替代方案,欢迎