Je donne les résultats suivants:Brindille - variables interpolées
{% if promo.monday_unavailable == 1 %}
not available mondays
{% elseif promo.monday_available == 1%}
available mondays
{% else %}
available mondays from {{promo.monday_start}} until {{promo.monday_end}}
{% endif %}
<br />
{% if promo.tuesday_unavailable == 1 %}
not available tuesdays
{% elseif promo.tuesday_available == 1%}
available tuesdays
{% else %}
available tuesdays from {{promo.tuesday_start}} until {{promo.tuesday_end}}
{% endif %}
<br />
...
que je voudrais faire pour chaque jour de la semaine.
Je me demande s'il est possible que je peux simplifier le code à lire
{% for i in ['monday','tuesday','wednesday','thursday','friday','saturday','sunday'] %}
{% if promo.~i~"_unavailable" == 1 %}
not available mondays
{% elseif promo.~i~"_available" == 1%}
available mondays
{% else %}
available mondays from {{promo.~i~"_start"}} until {{promo.~i~"_end"}}
{% endif %}
<br />
{% endfor %}
Brindille.
Toute aide serait appréciée. Je ne sais plus quels mots-clés rechercher.
J'ajouterais que dans le cas où 'promo' est un objet, il faut implémenter l'interface' ArrayAccess' (au moins pour la version 1.16 de Twig). Et il semble alors, Twig va accéder aux propriétés de l'objet en utilisant l'implémentation de l'interface avant d'utiliser getters comme expliqué dans la documentation Twig [ici] (http://twig.sensiolabs.org/doc/templates.html#variables) –
Vous pouvez également utiliser la fonction d'interpolation de chaîne 'promo [" # {i} _unavailable "]', comme expliqué dans [Documentation Twig] (http://twig.sensiolabs.org/doc/templates.html#string-interpolation) (version 1.16) –