У меня есть необходимый элемент в моей форме Zend:
$name = new Zend_Form_Element_Text('name'); $name->setLabel('Name') ->setValue(isset($plan)?$plan['name']:'') ->setRequired() ->setAttribs(array('class' => 'required', 'maxlength' => 50)) ->addValidators(array(new Zend_Validate_StringLength(array('min' => 1, 'max' => 50)), new Zend_Validate_Db_NoRecordExists(array('table' => 'plan', 'field' => 'name'))) ->addFilters(array(new Zend_Filter_StringTrim, new Zend_Filter_StripTags));
Все валидаторы работают идеально. Но это одна проблема. В контроллере я проверяю форму, используя getValidValues (это требуется для меня). И если запись в БД существует, элемент недействителен, а Zend очищает этот элемент. И я принимаю сообщение «Значение требуется». Как я могу получить сообщение о существующей строке в БД?
Извините за мой английский. Заранее спасибо.
Это было полезно для меня:
->setAllowEmpty(false)
вместо ->setRequired()
пытаться
setRequired (правда)
это правильно 😉