Wie überprüft man, ob ein Element eines Arrays selbst ein Array ist?

8

Gegeben diese Eingabe:

%Vor%

So validieren Sie Folgendes:

  1. key Attribut existiert
  2. Sein Wert ist ein Array (mit einer beliebigen Anzahl von Elementen)

Ich habe erwartet, dass diese Einschränkung funktioniert

%Vor%

, aber es löst eine Ausnahme aus:

%Vor%

Was vermisse ich?

PS: Es ist symfony v2.7.1

PPS: nur um klarzustellen: Ich weiß, dass man einen Rückruf verwenden kann. Wenn ich die Validierung manuell von Grund auf neu implementieren wollte, hätte ich symfony nicht von Anfang an verwendet. Die Frage bezieht sich insbesondere auf die Kombination der vorhandenen Einschränkungen und nicht auf die Verwendung einer Callback-Einschränkung.

    
zerkms 24.06.2015, 05:22
quelle

3 Antworten

4

Ich hatte das genau dasselbe Problem vor zwei Nächten.

Die Schlussfolgerung am Schluss war, dass Symfony2 validation keine "Fast-Fail" Validierung hat. Das heißt, selbst wenn Ihre Type() -Bedingung fehlschlagen würde, würde sie mit anderen Einschränkungen fortfahren und somit mit UnexpectedTypeException ausnahme fehlschlagen.

Ich konnte jedoch einen Weg finden, das anzugehen:

%Vor%

Ich hoffe, dass das ein bisschen hilft. Persönlich finde ich es ärgerlich, dass wir das tun müssen. Eine Art "Fast-Fail" -Flag in validator service wäre sehr hilfreich.

    
Jovan Perovic 02.07.2015, 14:46
quelle
2

Sie sagen, die Einschränkung Collection sollte nur fehlschlagen, anstatt eine Ausnahme auszulösen, weil 'value' eine string und keine array ist.

Es gibt einen kürzlich geloggten Symfony Bug: Ссылка

    
Mark Achée 24.06.2015 22:12
quelle
1

Verwenden Sie Callback constraint ( Dokumente ), in denen Sie Ihre benutzerdefinierte Validierungslogik implementieren können.

Die andere Möglichkeit besteht darin, benutzerdefinierte Constraint- und Validator-Klassen zu erstellen. ( Dokumente )

    
Vadim Ashikhman 24.06.2015 06:04
quelle

Tags und Links