Zend_Controller_Action を拡張するクラス TestController という名前のコントローラーがあります。ここで、TestForms (Zend_Form) で TestController のインスタンスを作成したいと思います。Zend_Form_Element_Select を動的に設定したいと考えています。これを行う方法を提案してください。事前にサンクス。
2 に答える
1
フォームをどこでインスタンス化していますか - それはコントローラーにありますか? フォームでコントローラのアクションを呼び出して値を動的に取得する代わりに、フォームがインスタンス化された後にフォームで値を設定する方法を検討する必要があります。
これを行う手っ取り早い方法は、コントローラーで値を取得し、次の方法で要素に割り当てることです。
$values = $db->query('query');
$element = $form->getElement('dynamicSelect');
$element->setValue($values);
もちろん、コントローラー内のテーブルに DB クエリを実行することは、ベスト プラクティスとは言えません... philistyne の提案に従って、フォーム ビルダー クラスを使用して、モデルからフォームを動的に構築します。モデルごとにマッパーを用意し、そのマッパーをフォーム ビルダー クラスに渡して、選択した要素に動的に入力できるようにします。
于 2011-03-10T06:28:32.737 に答える
0
試してみるいくつかのこと (コントローラーをフォームに渡すか、フォーム内からインスタンス化することはお勧めしません):
- モデルを使用して、Zend_Form_Element_Select に入れたい動的な値にアクセスします。
- フォームが複雑な場合は、フォーム ビルダー クラスを作成して、フォーム構築の面倒な作業を処理し、分離します。
- Zend_Form_Element_(Radio、Select など) から拡張してカスタマイズされたフォーム要素を作成します。フォーム要素の構成/動作/外観を細かく制御する必要があるが、その要素を別の場所で再利用できるようにしたい場合。
于 2011-03-08T14:27:36.867 に答える