webentwicklung-frage-antwort-db.com.de

Überprüfen Sie in Twig, ob ein bestimmter Schlüssel eines Arrays vorhanden ist

In PHP) können wir mit der Funktion array_key_exists() prüfen, ob ein Schlüssel in einem Array existiert.

In der Template-Sprache Twig) können wir überprüfen, ob eine Variable oder eine Objekteigenschaft vorhanden ist, indem wir einfach eine if -Anweisung wie diese verwenden:

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

Aber wie prüfen wir mit Twig, ob ein Schlüssel eines Array existiert? Ich habe es versucht {% if array.key %}, aber es gibt mir einen Fehler:

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

Da eine der wichtigsten Methoden zum Übertragen von Daten in eine Vorlage die Verwendung von Arrays ist, sollte dies auf irgendeine Weise erfolgen. Irgendwelche Gedanken?

65
user852610

Zweig Beispiel:

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

Sie können die Funktion keys twig verwenden

{% if myVar in someOtherArray|keys %}

17
Samir Patel

Schnelle Antwort (TL; DR)

  • DeveloperTLindel möchte die Existenz eines Array-Schlüssels in Twig testen.
  • DeveloperTLindel möchte alle Fehler abfangen, die mit undefined key zusammenhängen.
  • Dies kann mit dem Filter default erledigt werden.

Ausführliche Antwort

Kontext

  • Twig 2.x (letzte Version vom Mi 2017-03-08)
  • Allgemeine Verwendung des Filters default.

Problem

  • Szenario:
  • DeveloperTLindel möchte die Existenz eines Array-Schlüssels in Twig testen.
  • DeveloperTLindel möchte Fehler oder Ausnahmen vermeiden, die durch möglicherweise nicht definierten Schlüssel verursacht werden.

Lösung

  • DeveloperTLindel kann den Filter default verwenden.
  • Der Filter default fängt alle Ausnahmen aufgrund einer nicht definierten Variablen ab und ermöglicht das Ersetzen eines alternativen Werts durch Kurzschluss.
  • Der Filter default ist verkettbar.

Beispiel01

 
 {# - ************************************** *** 
 Testen auf einen einzelnen Schlüssel in einem assoziativen Array 
 - #} 
 {% - setze mystring = myarray ['key-no-existo'] | default ('__ BLANK__ ') -%} 
 
 {# - ********************************* ******** 
 Testen auf mehrere Schlüssel in einem assoziativen Array 
 - #} 
 {% - setze mystring = myarray ['alpha'] 
 | default (myarray ['bravo']) 
 | default (myarray ['charlie']) 
 | default ('__ BLANK __') 
 -%} 
 

Siehe auch

1
dreftymac