web-dev-qa-db-fra.com

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

Dans 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 si une variable ou la propriété d'un objet existe simplement en utilisant une instruction if, comme ceci:

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

Mais comment vérifier si une clé d'un array utilise 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’un des principaux moyens de transmettre des données à un modèle consiste à utiliser des tableaux, il semble qu’il devrait exister un moyen de le faire. Des pensées?

65
user852610

Exemple de brindille:

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

Vous pouvez utiliser la fonction keys twig

{% if myVar in someOtherArray|keys %}

17
Samir Patel

Réponse rapide (TL; DR)

  • DeveloperTLindel veut tester l'existence d'une clé de tableau dans Twig.
  • DeveloperTLindel souhaite intercepter les erreurs associées à une clé non définie.
  • Ceci peut être géré en utilisant le filtre default.

Réponse détaillée

Le contexte

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

Problème

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

Solution

  • DeveloperTLindel peut utiliser le filtre default.
  • Le filtre default intercepte toutes les exceptions dues à une variable non définie et autorise la substitution de court-circuit d'une valeur alternative.
  • Le filtre default est chaînable.

Exemple01

 
 {# - ************************************ *** 
 recherche d'une seule clé dans un tableau associatif 
 - #} 
 {% - set mystring = myarray ['key-no-existo'] | default ('__ BLANK__ ') -%} 
 
 {# - ****************************** ******** 
 recherche plusieurs clés dans un tableau associatif 
 - #} 
 {% - set mystring = myarray ['alpha'] 
 | default (myarray ['bravo']) 
 | default (myarray ['charlie']) 
 | default ('__ BLANK __') 
 -%} 
 

Voir également

1
dreftymac