Zum Inhalt springen

Validierung von Arrays - NotEmpty-Problem?

Erstellt am 7. März 2013 · 3 Antworten · letzte Antwort am 15. März 2013

Tags: Frage

schmidtpublic ·

Hallo,

ich habe eine Reihe von Checkboxen im Formular, von denen wenigstens eine ausgewählt sein muss.

Die heißen dann alle

tx_spprojektdb_projectdb[newProjects][focus][]

und die values werden bei Auswahl auch ordentlich im Array übergeben.

Im Model prüfe ich nun mit

/**
* focus
* @var array     
* @validate Tx_SpProjektdb_Validation_Validator_FocusarrayValidator
* @validate NotEmpty
*/
protected $focus;

ob der Wert NotEmpty und richtig ist.

Das Problem: Wenn kein Wert ausgewählt ist, wird kein Fehler gemeldet - Validator NotEmpty stellt zu recht fest, dass es weder '= null' noch 'empty' ist, aber mein Validator wird auch nicht ausgeführt. Da kommt nix an.

Wenn ein Wert gewählt wurde, reagiert er richtig (Debugausgabe ergibt richtige Reaktion im Validator).

Habe ich irgendwas falsch verstanden?

Viele Grüße vom Rhein, Stefan

harald1972 ·

Wenn der Tx_SpProjektdb_Validation_Validator_FocusarrayValidator angeworfen wird,
warum dann noch NotEmpty ?
Kann dein Tx_SpProjektdb_Validation_Validator_FocusarrayValidator das nicht implizit?
Ich meine, wenn der sagt, daß dein Model valid ist, kann es dann überhaupt noch empty sein?

Ich persönlich sträube mich gegen eine Verkettung von Validatoren, ich leite dann eher von einem bestehenden meinen eigenen ab.

Harald

schmidtpublic ·

Das Problem ist ja, dass im Fall eines leeren Arrays (also kein Wert angeklickt) der IsEmpty-Validator nicht anspricht (das ist für ihn NICHT empty) aber das ganze auch nicht mehr von meinem Validator gecheckt wird (also so, als ob es doch empty wäre).

(Ich habe mir jetzt damit geholfen, dass ich einen hidden-Wert 999 übergebe und den wieder rausfiltere, und vorher validiere, ob außer den 999 noch ein anderer Wert im Array vorkommt.
Aber so ein Gefrickel kann ja keine Lösung sein...)