2017-10-21 28 views
0

Dans une brindille modèle Bolt CMS, je suis en train de créer un tableau sans valeurs en double en extraire des données d'une table Pillars comme suit:Pourquoi un tableau indexé ne se forme pas lors de la récupération des données dans un modèle Bolt 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) }} 

La condition if ne semble pas fonctionner car arr n'est pas un tableau indexé. Je vous attendre à obtenir le résultat suivant (par exemple) de la {{ dump(arr) }}:

array:3 [▼ 
    0 => "Cash Transfer" 
    1 => "Human Resource" 
    2 => "ICT Services" 
] 

Mais au lieu-je obtenir ce qui suit, avec double Human Resource valeurs ne sont pas enlevées:

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

Quel pourrait être le problème ou Que pourrais-je faire de mal?

+0

L'indice de construction n'est pas mal en fait. La classe 'Twig_Markup' fait juste que le contenu à l'intérieur est traité comme sûr. Vous pourriez juste faire '{{arr [1]}}' et il sortirait 'Human resource'. La solution que vous avez trouvée fonctionnera mais échapperait 'HTML' – DarkBee

Répondre

0

Après avoir essayé vraiment très fort, j'ai réussi à résoudre le problème en concaténant une chaîne vide (deux guillemets simples) avant la valeur pour la 'forcer' à devenir une chaîne. Voici la solution, il pourrait sauver quelqu'un quelques heures d'essai à l'avenir.

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

Des solutions alternatives sont les bienvenus