Давайте начнем с короткого фрагмента кода, который я буду использовать, чтобы продемонстрировать свое мнение:
$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, в противном случае обычно применяются фильтры и валидаторы).