本來要寫「一些 Zend_Form 地雷」,結果整理起來還不少,還是改成「很多地雷」比較合理。
第一個地雷是 select 元素:
$el = $this->createElement('select', 'siteshow');
$el->setLabel('是否顯示下一頁');
$el->addMultiOption('1', '顯示');
$el->addMultiOption('0', '不顯示');
$this->addElement($el);
對這個元素設定值時,要記得用 intval()
轉成數字,像這樣:
$f->siteshow->setValue(intval($dbval['siteshow']));
第二個地雷是 setRequired()
的處理,假設你這樣寫:
$el = $this->createElement('text', 'article_title');
$el->setLabel('文章標題');
$el->setRequired(TRUE);
$this->addElement($el);
因為 setRequired
是使用 empty()
判斷,所以標題取 "0" 時就會過不去。目前的解法是用 stringLength
指定最小與最大長度:
$el->addValidator('stringLength', FALSE, array(1, 255));
$el->addValidator('stringLength', FALSE, array(1)); # 沒有最大長度限制
第三個... 忘記了,想到再寫 Q_Q
感謝分享~
希望自己用的時候不會踩到其他地雷...