Zend框架Checkbox问题

时间:2011-02-22 19:17:56

标签: php zend-framework firefox checkbox

您好 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指出!

2 个答案:

答案 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');