2012-10-07 104 views
0

我不明白爲什麼這個複選框與值= 0被populate(),而沒有數據通過這個選中複選框...Zend_Form的:與值複選框填充問題= 0

我的表單元素:

$this->addElement('multiCheckbox', 'etoiles', array(
    'filters' => array('Int'), 
    'separator' => '', 
    'label_placement' => 'prepend', 
    'label_class' => 'caseacocher', 
    'decorators' => $decorator_chain, 
)); 

$listeEtoiles = array(
    '0' =>'Sans étoiles', 
    '1' => '1 étoile"', 
    '2' => '2 étoiles', 
    '3' => '3 étoiles', 
    '4' => '4 étoiles', 
    '5' => '5 étoiles', 
) ; 
$this->getElement('etoiles')->addMultiOptions($listeEtoiles) ; 

如何填充表單到我的控制器:

$this->view->searchForm->populate($this->getRequest()->getPost()) ; 

我能得到什麼傾倒$this->getRequest()->getPost('etoiles')時:NULL

爲我的複選框什麼:

<input id="etoiles-0" type="checkbox" checked="checked" value="0" name="etoiles[]"> 

我不明白這一點。怎樣才能讓這個複選框被選中,而沒有關於etoiles[]的數據? 我剛纔發現我的「Int」過濾器與它有關。我應該刪除它嗎?如果我想保留這個Int過濾器呢?

沒有驗證器。我應該添加一些嗎?那麼InArray驗證器呢?我的值數組使用字符串索引,因爲我認爲$ _POST數據作爲字符串傳遞。這是一個錯誤嗎?

任何註釋或幫助將不勝感激:)

回答

0

這可能是字符串'0'之間的混淆和int 0(未選中用於無線電形式的元素)和null,PHP之一夸克。

尤其是當你要過濾的輸入值INT,而你的價值觀陣列使用字符串索引(有沒有你不使用默認的InArray驗證理由嗎?)

此外,我看到FormRadio助手使用in_array($opt_value, $value)無確定檢查屬性的嚴格參數。

+0

說實話,這是一個複製/粘貼,我只是爲了說明我的問題。忘了驗證器,沒有驗證器。我應該添加一些嗎?這個'InArray'驗證器呢? 我的值數組使用字符串索引,因爲我認爲'$ _POST'數據是作爲字符串傳遞的。這是一個錯誤嗎? – LittleBigDev