2017-10-21 217 views
0

在樹枝博爾特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

回答

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

替代方案,歡迎

相關問題