填充屬於Zend_Form一部分的select元素的最佳方式是什麼?使用Zend_Form填充數據庫選擇
我用populate()
來填充各種表單元素值,但是select語句沒有被填充。
我的解決辦法,這工作,但我懷疑是不是理想的,如下:
在MyForm
的init()
方法(它擴展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()
方法中調用了這個數據庫,所以每次使用表單時都會調用它。其次,我打開了一個數據庫連接來填充select元素,然後我使用第二個連接來使用填充。
什麼是更好的方法來做到這一切?我想做一個數據庫連接並使用填充來填充所有內容,並在控制器中完成所有操作,而不是在擴展表單類和控制器之間進行分割。這是最好的方法嗎?這是我的定製解決方案,它的工作原理,但我知道它是非常理想的
(順便說一句,作爲一個人單獨工作,並在一個孤立的位置能夠問stackoverflow這樣的問題,就好像我抓住一個同事問一個問題,對我來說是非常有用的...謝謝)