2009-07-15 8 views
0

Ich verwende Zend_Filter_Input, um Formulardaten zu validieren und die Fehlermeldungen anzupassen, wenn ein Benutzer keinen Wert eingibt. Es ist wichtig, dass jedes Feld eine andere Fehlermeldung erhält.Zend_Filter_Input und leere Werte

mit dem Zend Framework 1.8.0 habe ich das folgende Array für die „Validator“ Parameter von Zend_Filter_Input:

$validators = array(
    'salutation' => array(
     new Zend_Validate_NotEmpty(), 
     Zend_Filter_Input::MESSAGES => array(
      Zend_Validate_NotEmpty::IS_EMPTY => "Please enter a salutation" 
     ) 
    ), 
    /* ... */ 
); 

Da ich zu ZF 1.8.4 aktualisiert haben, ich leer die Standardmeldung immer erhalten Felder ("Sie müssen einen nicht leeren Wert für das Feld '% field%' angeben). Offensichtlich ruft Zend_Filter_Input den Zend_Validate_NotEmpty Validator nicht mehr auf, wenn das Feld leer ist.

Gibt es eine Möglichkeit, dieses Verhalten oder eine andere Möglichkeit zu ändern, benutzerdefinierte "leere" Nachrichten für jedes Feld zu erhalten?

+0

Mischen Sie wirklich Filter und validieren? Sie haben recht unterschiedliche Zwecke ... –

+0

Und Sie verwenden Zend_Filter_Input :: MESSAGES nicht validieren Nachrichten - das könnte das Problem sein. –

Antwort

1

Es scheint, dass Zend_Filter_Input sein Verhalten bei der Handhabung leerer Felder geändert hat. Leere Felder werden niemals von Regelvalidatoren verarbeitet. Wenn ein Feld leer ist und allowEmpty auf true gesetzt ist, wird keiner Ihrer Validatoren verwendet. Wenn das Feld leer ist und allowEmpty auf false gesetzt ist, wird die Standardmeldung für leere Werte festgelegt. Derzeit gibt es keine Möglichkeit, diese Nachricht für ein bestimmtes Feld anzupassen.

+0

Mit Zend Framework 1.8.4 bekomme ich immer noch die Standardmeldung. – uberboom

+0

Erhalten Sie die Standardnachricht für ein fehlendes Feld oder die Standardmeldung des NotEmpty-Validators? – Flo

+0

Ich änderte die Antwort nach einigen Recherchen zu dem Thema. – Flo

0

versuchen Sie dies:

$validators = array(
     'salutation' => array('NotEmpty', Zend_Filter_Input::MESSAGES => 'Please enter a salutation') 
     ); 

Ich weiß nicht, warum, aber scheint sie die Konstante „isEmpty“ mit „NotEmpty“ geändert (ohne es in der Zend_Validate_NotEmpty Klasse einschließlich) . Manchmal bin ich einfach verrückt mit Zend. :)

Verwandte Themen