Лучший подход к расширению полей из валидатора

// РЕШЕНИЕ Хорошо, поэтому при просмотре в Zends Sourcecode (должно было это сделать, прежде чем спрашивать …) я нашел лучшее решение (думаю). В классах абстрактной проверки базы данных была установлена ​​функция setExclude() поэтому мы можем использовать ее в хорошем потоке:

 //Inside Controller before valling $form->isValid() $form->getElement('x')->getValidator('Db_NoRecordExists')->setExclude(array( 'field'=>'some_id', 'value'=>$idToEdit )) 

// Initial QUESTION Я создаю свои формы с помощью расширения 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) Что-то еще? Может быть, есть еще что-то еще, что мне не хватает, для меня, хотя почему-то обе идеи не выглядят слишком хорошо для меня: S Anyways, каждый вход оценивается 🙂

Solutions Collecting From Web of "Лучший подход к расширению полей из валидатора"

Для более чистого использования SO здесь ответ как сообщение

// РЕШЕНИЕ Хорошо, поэтому при просмотре в Zends Sourcecode (должно было это сделать, прежде чем спрашивать …) я нашел лучшее решение (думаю). В классах абстрактной проверки базы данных была установлена ​​функция setExclude (), поэтому мы можем использовать ее в хорошем потоке:

 //Inside Controller before valling $form->isValid() $form->getElement('x')->getValidator('Db_NoRecordExists')->setExclude(array( 'field'=>'some_id', 'value'=>$idToEdit ))