Zend_Form の一部である select 要素を設定する最良の方法は何ですか?
以前populate()
はさまざまなフォーム要素の値を入力していましたが、select ステートメントが入力されません。
機能しますが、理想的ではないと思われる私の解決策は次のとおりです。
(を拡張する)のinit()
メソッドで、データベース呼び出しを行い、必要なデータを取得します。MyForm
Zend_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にこのような質問をすることができるので、私にとって非常に便利です...ありがとう)