2011-10-20 9 views
2

//解決策 Zend Sourcecodeを参照している間に(質問する前に...)、私は最良の解決策を見つけました。バリデータからフィールドを抽出するための最良のアプローチ

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

//最初の質問 私はZend_Formのを拡張を通じて、私のフォームを作成:抽象DB検証クラスは、私たちはその後、素敵な流れの中でそれを使用することができます機能setExclude()を得ました。そして、私はaddAction()editAction()に1つの書式を使用します。編集プロセスの中でElementsを削除したいときは、$form->removeElement('x')で簡単に行うことができます。

しかし、バリデータからフィールドを削除するにはどうすればよいでしょうか?

1)を除去し、フォーム

//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)何か他に編集IDを注入新たに設定されたバリ

//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)を追加? たぶん私は行方不明になっているかもしれませんが、どうにかして両方のアイデアがあまりにも良く見えません:Sとにかく、すべての入力は高く評価されています:)

答えて

0

ここでは、投稿

//解決策だから、Zends Sourcecodeを閲覧している間に(質問する前にこれを行っていたはずです)私は最良の解決策を見つけました(私は推測します)。抽象DB検証クラスには、関数setExclude()が用意されており、これをniceフローで使用できるようになりました。

関連する問題