为什么在Bolt CMS模板中获取数据时未形成索引数组

时间:2017-10-21 06:50:28

标签: arrays templates twig bolt-cms

在twig Bolt CMS模板中,我试图通过从表Pillars获取数据来创建没有重复值的数组,如下所示:

{% 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"
  }
]

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

1 个答案:

答案 0 :(得分:0)

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

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

欢迎替代解决方案