Dans Twig, vérifiez si la clé 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 des Templiers de brindilles, nous pouvons vérifier si une variable ou la propriété d'un objet existe simplement en utilisant une déclaration if , comme ceci:

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

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

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

As une des principales façons de passer des données dans un modèle est d'utiliser des tableaux, il semble qu'il devrait y avoir un moyen de le faire. Toutes les pensées?

53
demandé sur dreftymac 2012-11-28 18:21:33

3 réponses

exemple de brindille:

{% if array.key is defined %}
  // do something
{% else %}
  // do something else
{% endif %}
135
répondu phpisuber01 2012-11-28 14:29:20

vous pouvez utiliser la keys fonction de brindille

{% if myVar in someOtherArray|keys %}

13
répondu Samir Patel 2017-01-23 21:23:06

Quick Answer (TL;DR)

  • DeveloperTLindel veut tester l'existence de la clé de réseau dans la brindille.
  • DeveloperTLindel veut détecter toute erreur associée à une clé non définie.
  • peut être manipulé en utilisant le filtre default .

Réponse Détaillée

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 de la clé de tableau dans la brindille.
  • DeveloperTLindel veut éviter toute erreur ou Exception causée par une clé potentiellement non définie.

Solution

  • DeveloperTLindel peut utiliser le filtre default .
  • le filtre default capte toutes les exceptions dues à une variable non définie, et permet une substitution de court-circuit d'une valeur alternative.
  • le filtre default est raccordable.

Example01


{#- ****************************************
  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

1
répondu dreftymac 2017-05-23 12:10:32