Ich verwende Zend_Validate
, um einige Formulareingabe zu validieren (Zend Framework Version ist 1.8.2). Aus irgendeinem Grund hat die Zend_Filter_Input
Schnittstelle wie beschrieben here mit nicht:Warum kann ich die Standardvalidierungsfehlermeldung nicht überschreiben?
$data = $_POST;
$filters = array('*' => array('StringTrim'));
$validators = array('driverName' => array('NotEmpty','messages' => 'This should override the default message but does not!'));
$inputFilter = new Zend_Filter_Input($filters,$validators,$data);
$messages = $inputFilter->getMessages();
debug($messages); //show me the variable contents
Ausgabe von debug($messages)
:
Array
(
[driverName] => Array
(
[isEmpty] => You must give a non-empty value for field 'driverName'
)
)
Egal was ich tue, kann ich nicht, dass die Nachricht überschreiben. Wenn ich den Validator direkt, d.h .:
$notEmpty = new Zend_Validate_NotEmpty();
$notEmpty->setMessage('This WILL override the default validation error message');
if (!$notEmpty->isValid($_POST['driverName'])) {
$messages = $notEmpty->getMessages();
debug($messages);
}
Ausgabe von debug($messages)
:
Array
(
[isEmpty] => Please enter your name
)
Unterm Strich. Ich kann Validatoren zur Arbeit bringen, aber ohne die Vorteile der Schnittstellenvalidierungsmethode Zend_Filter_Input
könnte ich genauso gut meine eigene Validierungsklasse schreiben!
Hat jemand eine Ahnung, warum dies passiert und wie man es beheben kann?
Könnte es ein Fehler sein?
@ Jason - Vielen Dank für die Details und richtige Antwort. Der $ options Parameter hat es genagelt. Perfekt, vielen Dank noch einmal :) – karim79