2011-04-20 113 views
1

我在Zend_Form中有一个表单,需要一些复选框,我希望它们是普通的旧复选框。你知道,你给他们一个名字和一个价值。如果他们被检查,你的发布数据包含name =>值。如何获取Zend表单中的常规复选框?

Zend_Form正在生成两个输入字段。其中一个是value=1的复选框,另一个是value=2的隐藏输入。两者都有相同的名称。理论上我理解Zend希望复选框如何工作,但这并不是我期望的工作方式,也不是我希望它工作的方式。我如何让我的旧时尚HTML复选框回来?

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

回答

1

你可以扩展 Zend库,并添加自己的自定义表单元素渲染它,就像你期望它。我做了一个日期字段,它工作得很好。

0

我想知道为什么这不适合你。您可以将这些值设置为任何您想要的值(setCheckedValue()setUncheckedValue())。所以与正常复选框唯一的区别是

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

你究竟在做什么?

+0

我已经写代码期待传统的HTML复选框,因为Zend的说明书给了我没有理由怀疑,任何其他将被生成。我不想重写它。 Zend复选框不起作用的原因是因为在正常复选框中,“0”值表示未在发布数据中设置该值。使用Zend复选框,它的值设置为零。我的代码希望未经检查的框未被设置。 multicheckbox解决了它。 – 2011-04-21 15:16:14

+0

尝试替换:“isset($ _ POST ['checkboxName'])”与“isset($ _ POST ['checkboxName'])&& $ _POST ['checkboxName']”:)这不是一个工作。 Multicheckbox可能不适合所有情况,因为它是组元素! :) – 2011-04-21 17:59:42

+0

我在Zend Framework问题跟踪器上提出了一个问题,同时回到隐藏字段的问题。 http://framework.zend.com/issues/browse/ZF-6624现在已经有一段时间了,但你仍然可以投票。 – 2012-02-16 16:19:48

2

最后,真正正确的答案是一个选项添加到元素:

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