web-dev-qa-db-fra.com

Twig Conversion de tableau en chaîne

C'est probablement relativement facile à faire, mais je suis nouveau à twig et je suis frustré.

J'adapte le code de cette réponse: https://stackoverflow.com/a/24058447

le tableau est fait en PHP à travers ce format:

$link[] = array(
       'link' => 'http://example.org',
       'title' => 'Link Title',
       'display' => 'Text to display',
);

Puis à travers twig, j'y ajoute du html, avant d'imploser:

    <ul class="conr">
        <li><span>{{ lang_common['Topic searches'] }} 
        {% set info = [] %}
        {% for status in status_info %}
            {% set info = info|merge(['<a href="{{ status[\'link\'] }}" title="{{ status[\'title\'] }}">{{ status[\'display\'] }}</a>']) %}
        {% endfor %}

        {{ [info]|join(' | ') }}
    </ul>

Mais je reçois:

Errno [8] Conversion de tableau en chaîne dans F:\localhost\www\twig\include\lib\Twig\Extension\Core.php sur la ligne 832

Il est résolu lorsque je supprime cette ligne, mais n'affiche pas:

{{ [info]|join(' | ') }}

Des idées sur la façon dont je peux imploser cela correctement?

** mise à jour **

En utilisant la fonction de vidage de Twig, il ne renvoie rien. Il semble que ce ne soit même pas le charger dans le tableau en premier lieu. Comment puis-je charger des informations dans un nouveau tableau.

14
Chris98

Vous ne devriez pas vraiment construire des structures de données complexes à l'intérieur de modèles Twig. Vous pouvez obtenir le résultat souhaité de manière plus idiomatique et lisible comme ceci:

{% for status in status_info %}
    <a href="{{ status.link }}" title="{{ status.title }}">{{ status.display }}</a>
    {% if not loop.last %}|{% endif %}
{% endfor %}
10
deceze

info est un tableau, vous devez donc simplement écrire

{{ info|join(', ') }}

pour afficher votre tableau d'informations.

[info] est un tableau avec une valeur: les informations du tableau.

33
JL M

Vous pouvez utiliser json_encode pour sérialiser le tableau sous forme de chaîne, puis afficher pretty - build in twig

 {{array | json_encode (constant ('JSON_PRETTY_PRINT'))}} 
 
1
Developer