Давайте начнем с короткого фрагмента кода, который я буду использовать для демонстрации своего мнения:
$title = new Zend_Form_Element_Text('title', array(
'label' => 'Title',
'required' => false,
'filters' => array(
'StringTrim',
'HtmlEntities'
),
'validators' => array(
array('StringLength', false, array(3, 100))
),
));
Эта важная строка:
'required' => false,
Это означает, что поле ввода не является обязательным, и вы можете отправить форму без ее заполнения. Однако это также означает, что любые фильтры и валидаторы не будут применяться к нему, если вы решите заполнить это поле.
Здравый смысл подсказывает мне, что это иррациональное поведение. Как я понимаю слово «обязательный» в отношении полей ввода HTML: необязательное поле ввода должно возвращать NULL, если оно не заполнено, но если пользователь решит его заполнить, к нему должны применяться как фильтры, так и валидаторы. Вот что имеет смысл для меня. Ты согласен со мной или мой здравый смысл не такой уж здравый?
Теперь более практичный вопрос, потому что именно так ведет себя Zend_Form, как я могу получить необязательные поля, которые будут работать, как я описал выше (если пользователь ничего не вводит, он возвращает NULL, иначе обычно применяются фильтры и валидаторы).