96 votes

Dans Twig, vérifier si une clé spécifique d'un tableau existe.

En PHP, nous pouvons vérifier si une clé existe dans un tableau en utilisant la fonction array_key_exists() .

Dans le langage de modélisation Twig, nous pouvons vérifier l'existence d'une variable ou d'une propriété d'un objet en utilisant simplement une balise if comme ceci :

{% if app.user %}
do something here
{% else %}
do something else
{% endif %}

Mais comment vérifier si une clé d'un fichier tableau existe en utilisant Twig ? J'ai essayé {% if array.key %} mais cela me donne une erreur :

Key "key" for array with keys "0, 1, 2, 3...648" does not exist

Comme l'une des principales façons de transmettre des données dans un modèle est d'utiliser des tableaux, il semble qu'il devrait y avoir un moyen de le faire. Avez-vous des idées ?

220voto

phpisuber01 Points 7296

Exemple de Twig :

{% if array.key is defined %}
  // do something
{% else %}
  // do something else
{% endif %}

33voto

Samir Patel Points 352

Vous pouvez utiliser le keys fonction de brindille

{% if myVar in someOtherArray|keys %}

3voto

dreftymac Points 7843

Réponse rapide (TL;DR)

  • DeveloperTLindel veut tester l'existence d'une clé de tableau dans Twig.
  • DeveloperTLindel veut piéger toute erreur associée à une clé non définie.
  • Cela peut être géré en utilisant la fonction default filtre.

Réponse détaillée

Contexte

  • Twig 2.x (dernière version en date du mer 2017-03-08)
  • Utilisation générale de l default filtre.

Problème

  • Scénario :
  • DeveloperTLindel veut tester l'existence d'une clé de tableau dans Twig.
  • Le développeurTLindel veut éviter toute erreur ou exception causée par une clé potentiellement indéfinie.

Solution

  • Le développeurTLindel peut utiliser l'option default filtre.
  • Le site default Le filtre capte toutes les exceptions dues à une variable non définie, et permet de substituer une autre valeur par un court-circuit.
  • Le site default est chaînable.

Exemple01

{#- \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
  testing for a single key in associative array
  -#} 
  {%- set mystring = myarray\['key-no-existo'\] |default('\_\_BLANK\_\_')  -%}

{#- \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
  testing for a multiple keys in associative array
  -#} 
  {%- set mystring = myarray\['alpha'\]
        |default(myarray\['bravo'\])
        |default(myarray\['charlie'\])
        |default('\_\_BLANK\_\_')
        -%}

Voir aussi

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X