您好 Zend_Form_Element_Checkbox的问题在于,它渲染时会创建一个与实际复选框同名的隐藏输入字段。那么让我们看看代码:
这是我在表单中创建元素的方式:
$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我通过post获得了所需的结果(如果未选中'0',如果选中'1'),但在Firefox中两种情况我得到'0',我知道这是因为那个隐藏的领域。 我用谷歌搜索,似乎没有弄清楚这个问题。所以我的问题是其他人如何管理这个,或者可能有一个解决方案让这个工作在Firefox中。任何帮助将不胜感激。提前谢谢。
编辑:感谢@Marcin - 我认为问题出在我的装饰者身上。 在Firebug中我得到一个混乱的输出,我想如果我将正确安排它将工作,再次感谢@Marcin指出!答案 0 :(得分:2)
您可能已启用Dojo表单。 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()的插件加载器。
快乐黑客!
答案 1 :(得分:1)
您需要使用IdenticalValidator作为此问题的解决方法:
->addValidator('Identical', false, '1');