1

Zend_Form の一部である select 要素を設定する最良の方法は何ですか?

以前populate()はさまざまなフォーム要素の値を入力していましたが、select ステートメントが入力されません。

機能しますが、理想的ではないと思われる私の解決策は次のとおりです。

(を拡張する)のinit()メソッドで、データベース呼び出しを行い、必要なデータを取得します。MyFormZend_Form

$opt = Zend_Registry::get('dbAdapter');
$sql = 'SELECT DISTINCT foo FROM bar';
$res = $opt->fetchAll($sql);
$flat = $this->flattenArray($res); //this flattens the array and 
                                   //sets the keys to equal the values

この時点$flatで、正しい select 要素の multi-options 値に渡します。次に、コントローラーがビューのフォームを取得したときに、フォームにデータを入力する必要がある場合は、そのフォームで populate を呼び出すと、すべてが適切に入力されたように見えます。

私が見るいくつかの問題: まず、フォームのinit()メソッドにこのデータベース呼び出しがあるため、フォームが使用されるたびに呼び出されます。2 番目に、データベース接続を開いて select 要素を設定し、2 番目の接続を行って populate を使用します。

このすべてを行うためのより良い方法は何ですか? 1 つのデータベース接続を行い、populate を使用してすべてを入力し、拡張フォーム クラスとコントローラーの間で分割するのではなく、コントローラー内からすべてを実行したいと考えています。これは最善のアプローチですか?これは私のオーダーメイドのソリューションであり、機能しますが、理想からはほど遠いことを知っています

(ちなみに、一人で孤立した場所で仕事をしている人が、まるで同僚をつかんで質問しているかのように、stackoverflowにこのような質問をすることができるので、私にとって非常に便利です...ありがとう)

4

1 に答える 1

1

私はあなたが何を求めているのか100%確信が持てません。あなたの例の SQL 呼び出しは、1 つのページ ビューに対して複数回実行されると解釈しますが、それが気に入らないのですか?

選択したコンテンツをキャッシュできます

  • init 関数またはクラスで静的変数を使用したページ ビュー。
  • ユーザーをセッション変数として。
  • Zend_Cache を使用してすべてのユーザーがファイルまたは memcache に保存されます。
于 2008-12-20T06:56:18.797 に答える