2011-02-22 121 views
5

嗨 Zend_Form_Element_Checkbox的問題是,當它呈現它正在創建一個與實際複選框同名的隱藏輸入字段時。因此,讓我們來看看代碼:Zend框架複選框問題

這是我如何創建內部形狀元素:

$onlineCheckbox = $this->createElement('checkbox', 'online_checkbox', array(
     'label'=>'Online:', 
     'uncheckedValue'=> '0', 
     'checkedValue' => '1' 
    )); 

這是輸出的HTML看起來像:

<input type="hidden" name="online_checkbox" value="0" /><input type="checkbox" name="online_checkbox" id="online_checkbox" value="1" /> 

現在的問題是,在其他瀏覽器然後Firefox我通過發佈獲得所需的結果(如果未選中'0',如果選中'1'),但在Firefox中,對於這兩種情況我都會得到'0',我知道這是因爲隱藏的字段。 我GOOGLE了,似乎沒有想出這個問題。所以我的問題是其他人如何管理這一點,或者可能有一個解決方案,使其在Firefox中工作。任何幫助將不勝感激。預先感謝。

編輯:感謝@Marcin - 我認爲問題出在我的裝飾者。 在Firebug中,我得到了一個混亂的輸出,我認爲如果我將它們正確地安排它將工作,再次感謝@Marcin指出!

+1

@Centurion。你可以提供更多的細節,因爲我剛剛檢查了你的代碼片段,它似乎在firefox中工作(我得到了,如果未選中'0',如果選中'1')。 – Marcin 2011-02-22 19:27:30

+0

@Marcin,當我用純HTML測試它正在工作,但是當我用zend生成時,它不是。你用zend測試過嗎? – Centurion 2011-02-22 19:35:44

回答

1

您需要使用IdenticalValidator作爲解決此問題的:

->addValidator('Identical', false, '1'); 
2

你可能有一個道場啓用表單。 Zend_Dojo_View_Helper_CheckBox呈現一個隱藏的元素和表單元素。您可以指定普通舊複選框,如下所示:

$onlineCheckbox = new Zend_Form_Element_CheckBox('online_checkbox', array(
    'label'=>'Online:', 
    'uncheckedValue'=> '0', //can be removed, this is the default functionality 
    'checkedValue' => '1', //can be removed, this is the default functionality 
)); 

這將通過Zend_Form :: createElement()的插件加載器。

快樂黑客!