【问题标题】:How do I get a regular Checkbox in a Zend Form?如何在 Zend 表单中获得常规复选框?
【发布时间】:2011-04-20 19:08:40
【问题描述】:

我在 Zend_Form 中有一个需要一些复选框的表单,我希望它们是常规的旧复选框。你知道,你给他们一个名字和一个价值。如果它们被选中,则您的帖子数据包含名称=>值。

Zend_Form 正在生成两个输入字段。第一个是带有value=1 的复选框,第二个是带有value=2 的隐藏输入。两者具有相同的名称。我从理论上理解 Zend 期望复选框如何工作,但这不是我期望它如何工作,也不是我希望它如何工作。如何找回旧式 HTML 复选框?

我尝试过使用$this->createElement$this->addElement 并手动创建Zend_Form_Element_Checkbox。没有允许我设置复选框的值并全部生成隐藏输入。

【问题讨论】:

    标签: zend-framework checkbox zend-form


    【解决方案1】:

    最终且真正正确的答案是为元素添加一个选项:

    $this->addElement('checkbox', 'my_element', array(
        'label' => 'My Element Label',
        'name' => 'my_element_name',
        'disableHidden' => true
    ));
    

    【讨论】:

      【解决方案2】:

      Zend_Form_Element_MultiCheckbox 是您正在寻找的。

      标准的 Checkbox 元素用于表示“是/否”场景。

      【讨论】:

        【解决方案3】:

        您可以扩展 Zend 库并添加您自己的自定义表单元素 以按照您的预期呈现它。我这样做是因为有一个日期字段,它工作得很好。

        【讨论】:

          【解决方案4】:

          我想知道为什么这对你不起作用。您可以将值设置为您想要的任何值(setCheckedValue()setUncheckedValue())。所以与普通复选框的唯一区别是

          if (null == $this->_getParam('checkbox', null)) {
          //vs.
          if ($unchecked == $this->_getParam('checkbox')) {
          

          你到底想做什么?

          【讨论】:

          • 我已经编写了期望传统 HTML 复选框的代码,因为 Zend 手册让我没有理由怀疑会生成任何其他内容。我不想重写它。 Zend 复选框不起作用的原因是,在普通复选框中,“0”值表示未在发布数据中设置该值。使用 Zend 复选框将其设置为零值。我的代码希望取消设置未选中的框。多选框解决了它。
          • 尝试用 "isset($_POST['checkboxName']) && $_POST['checkboxName']" 替换:"isset($_POST['checkboxName'])" :) 没那么多的一部作品。多复选框可能并不适合所有情况,因为它是组元素! :)
          • 我在 Zend Framework 问题跟踪器上提出了一个问题,不久前涉及隐藏字段的问题。 framework.zend.com/issues/browse/ZF-6624 已经有一段时间了,但你仍然可以投票。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-29
          • 2011-09-21
          • 2012-09-05
          相关资源
          最近更新 更多