I have a question about Zend_Filter_Input. I have read and reread the
documentation and I am confused about the what can be done with the messages
parameter when defining a validator. The problem is that if I have a value
string that is empty it seems I cannot override the error message that is
returned. Maybe I am just not understanding the documentation fully? Here
is the code(generecized):
$validators = array('fname' => array('Alpha',
'presence' => 'required',
'messages' => 'Invalid First Name'));
$filters = array();
$options = array('missingMessage' => 'test message 2',
'notEmptyMessage' => 'test message 3');
$input = Zend_Filter_Input($filters, $validators,
$this->getRequest()->getPost(), $options);
if ($input->hasMissing() || $input->hasInvalid()) {
$msg ='';
foreach($input->getMessages() as $error) {
$msg .= implode("\n", $error);
}
throw new My_Exception($msg);
}
I expect to receive one of my three test messages for any error from this
validator and I have tried both $input->getMessages() and
$input->getErrors()... however when the string is empty I always receive
the following message.
'' is an empty string
When I dump the $input after it processes I see:
...
...
...
["_validatorRules:protected"] => array(8) {
["fname"] => array(9) {
[0] => string(5) "Alpha"
["presence"] => string(8) "required"
["messages"] => array(1) {
[0] => string(19) "Invalid First Name."
}
["rule"] => string(5) "fname"
["fields"] => string(5) "fname"
["breakChainOnFailure"] => bool(false)
["allowEmpty"] => bool(false)
["validatorChain"] => object(Zend_Validate)#187 (3) {
["_validators:protected"] => array(1) {
[0] => array(2) {
["instance"] => object(Zend_Validate_Alpha)#188 (6) {
["allowWhiteSpace"] => bool(false)
["_messageTemplates:protected"] => array(2) {
["notAlpha"] => string(19) "Invalid First Name."
["stringEmpty"] => string(28) "'%value%' is an empty string"
}
["_value:protected"] => string(0) ""
["_messageVariables:protected"] => array(0) {
}
["_messages:protected"] => array(1) {
[0] => string(21) "'' is an empty string"
}
["_errors:protected"] => array(1) {
[0] => string(11) "stringEmpty"
}
}
["breakChainOnFailure"] => bool(false)
}
}
["_messages:protected"] => array(1) {
[0] => string(21) "'' is an empty string"
}
["_errors:protected"] => array(1) {
[0] => string(11) "stringEmpty"
}
}
["validatorChainCount"] => int(1)
}
...
...
...
["_invalidMessages:protected"] => array(1) {
["fname"] => array(1) {
[0] => string(21) "'' is an empty string"
}
}
["_invalidErrors:protected"] => array(1) {
["fname"] => array(1) {
[0] => string(11) "stringEmpty"
}
}
Any help here understanding my mistake or what I'm doing wrong would be
appreciated. Thanks
Josh