Я создаю свои формы через расширение Zend_Form. И я использую одну форму для addAction()
и editAction()
. Когда я хочу удалить Элементы в процессе редактирования, я могу сделать это легко с помощью $form->removeElement('x')
.
Но как лучше всего удалить поле из валидатора?
1) Удаление и добавление вновь установленного валидатора
//Controllers editAction()
$form->removeValidator('Db_NoRecordExists');
$form->addValidator('Db_NoRecordExists', true, array(
'table'=>'table',
'field'=>'field',
'exclude'=>array(
'field'=>'id',
'value'=>$this->_getParam('id')
)
));
2) Добавление идентификатора редактирования в форму
//Forms Contstructor
public function __construct($idToEdit=0, $options=null)
{
$this->setIdToEdit($idToEdit);
parent::__construct($options);
}
//within init()
$formField->addValidator('Db_NoRecordExists', true, array(
'table'=>'table',
'field'=>'field',
'exclude'=>array(
'field'=>'id',
'value'=>$this->getIdToEdit()
)
));
//Controller calling the form like this:
$form = new Custom_Form($this->_getParam('id'), $options);
3) Что-то еще?
Может быть, есть еще что-то, чего мне не хватает, хотя мне почему-то обе идеи кажутся мне не слишком хорошими.