填充作为 Zend_Form 一部分的选择元素的最佳方法是什么?
我习惯于populate()
填写各种表单元素值,但选择语句不会被填充。
我的解决方案(可行但我怀疑并不理想)如下:
在(which extends ) 的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
给正确选择元素的多选项值。然后,当控制器获取视图的表单时,如果需要填充表单,我会在其上调用填充,并且所有内容都显示为正确填充。
我看到的一些问题:首先我在表单的init()
方法中有这个数据库调用,所以每次使用表单时都会调用它。其次,我打开了一个数据库连接以填充选择元素,然后我进行第二个连接以使用填充。
有什么更好的方法来完成这一切?我想做一个数据库连接并使用填充来填充所有内容并在我的控制器中完成所有操作,而不是在扩展表单类和控制器之间拆分它。这是最好的方法吗?这是我的定制解决方案,它有效,但我知道它远非理想
(顺便说一句,作为一个独自工作并在一个孤立的地方工作的人能够向stackoverflow提出这样的问题,就好像我正在抓住一个同事问一个问题一样,对我来说非常有用......谢谢)