很多地雷的 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 是使用 判斷,所以標題取 "0" 時就會過不去。目前的解法是用 指定最小與最大長度:

$el->addValidator('stringLength', FALSE, array(1, 255));
$el->addValidator('stringLength', FALSE, array(1)); # 沒有最大長度限制

第三個... 忘記了,想到再寫 Q_Q

One thought on “很多地雷的 Zend_Form...”

Leave a Reply

Your email address will not be published. Required fields are marked *