web-dev-qa-db-fra.com

Incrémenter la variable entière déclarée

J'essaie de faire des rayures zébrées:

{% set counter = 0 %}
{% for entity in entities %}
  <tr class="{{ cycle(['odd', 'even'], counter) }}">
    {% counter++ %}

mais je reçois une erreur:

Nom de balise inattendu "compteur" (attend la fermeture de la balise pour la balise "for" définie près de la ligne 11)

Quelqu'un pourrait-il me donner une solution?

[MODIFIER]

Ma mauvaise solution est si simple:

{% set counter = counter + 1 %}
31
Codium

Il existe un moyen plus simple de faire ce que vous voulez:

{{ cycle(["even", "odd"], loop.index) }}

Voir docs pour les goodies loop.

37
Maerlyn

Si vous voulez avoir un contrôle total sur le html, vous pouvez essayer ceci:

{% if loop.index is divisibleby(2) %}
    ...
{% endif %}

Vous pouvez le lire ici: http://twig.sensiolabs.org/doc/tests/divisibleby.html

notez que loop.index est utilisé tel quel, il ne fait pas référence à une variable plutôt à l'indexation cachée de la boucle for.

5