Zend_Filter_Input is really nice to be sure form data is filtered correctly, but i have some serious complaints: Why the hell are the error messages so user-unfriendly? I really would like to use the output of Zend_Filter_Input::getMessages(), but I could never trust to show them to a user of my website: They are obviously written for developers. Some examples:
'' does not appear to be an integer '' is an empty string
I use a ton of validators to filter the comments form and all possible error messages that can be thrown are not "user-save". Because all these messages are handled in each Validator class its almost impossible to change them without going nuts:
$validators = array(
'article_id' => array(
'Int',
new Zend_Validate_Int(),
array('GreaterThan', 0)
),
'username' => 'Alnum',
'userEmail' => new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS | Zend_Validate_Hostname::ALLOW_LOCAL, true),
'cp' => array(
'Digits', // string
new Zend_Validate_Int(), // object instance
array('Between', 1138, 1138) // string with constructor arguments
),
'comment' => 'NotEmpty',
);
This simple $validators requirement creates templates for error messages in each validator object, that are: Zend_Validate_Int, Zend_Validate_Alnum, Zend_Validate_EmailAddress, Zend_Validate_Hostname, and the not empty message. To allow for user friendly messages one had to make child objects of each of the Validators and edit the error messages accordingly. I avoid this by printing my own errors from outside the Zend_Filter_Input, rather than using the object for what it is probably supposed to do.