Vérifier si la variable est une chaîne ou un tableau dans Twig
Est-il possible de vérifier si la variable est une chaîne de caractère dans Twig
?
Solution attendue:
messages.en.yml
:
hello:
stranger: Hello stranger !
known: Hello %name% !
Twig
modèle:
{% set title='hello.stranger' %}
{% set title=['hello.known',{'%name%' : 'hsz'}] %}
{% if title is string %}
{{ title|trans }}
{% else %}
{{ title[0]|trans(title[1]) }}
{% endif %}
Est-il possible de faire de cette façon ? Ou peut-être vous avez une meilleure solution ?
- Vous pouvez peut-être faire quelque chose avec les
iterable
test? twig.sensiolabs.org/doc/tests/iterable.html
Vous devez vous connecter pour publier un commentaire.
Peut être fait avec le test
iterable
, a ajouté twig1.7, comme Wouter J indiqué dans le commentaire :Référence : itérable
iterable
même si elles ne sont pas unearray
. Itérable est pas un vrai test si quelque chose est un tableau. J'ai une réponse comment faire un tableau comme le test d'{% if value is array %}
ci-dessous. stackoverflow.com/a/29642662/417822Ok, je l'ai fait avec:
Laid, mais il fonctionne.
[0]
indexJ'ai trouvé
iterable
de ne pas être assez bon, car d'autres objets peuvent également être itératif, et sont clairement différente de celle d'unearray
.Donc l'ajout d'un nouveau
Twig_SimpleTest
pour vérifier si un élémentis_array
est beaucoup plus explicite. Vous pouvez ajouter ceci à votre configuration de l'application /après twig est amorcé.Utilisation devient très propre:
iterable
éléments sont égaux. La structure d'uniterable
est différente selon le type.getTests
méthode), enregistrez-le en tant que service, et ajouter la balisetwig.extension
à la définition du service. La balise est ce qui rend le TwigBundle prendre soin de laaddExtension
pour vous. Plus de détails ici: symfony.com/doc/current/templating/twig_extension.html