Zend framework Zend_表单:在值为0的复选框中填充问题
我不明白为什么值为0的复选框被Zend framework Zend_表单:在值为0的复选框中填充问题,zend-framework,checkbox,zend-form,populate,zend-filter,Zend Framework,Checkbox,Zend Form,Populate,Zend Filter,我不明白为什么值为0的复选框被populate()选中,而没有传递有关此复选框的数据 我的表单元素: $this->addElement('multiCheckbox', 'etoiles', array( 'filters' => array('Int'), 'separator' => '', 'label_placement' => 'prepend', 'label_class' => 'caseacocher',
populate()
选中,而没有传递有关此复选框的数据
我的表单元素:
$this->addElement('multiCheckbox', 'etoiles', array(
'filters' => array('Int'),
'separator' => '',
'label_placement' => 'prepend',
'label_class' => 'caseacocher',
'decorators' => $decorator_chain,
));
$listeEtoiles = array(
'0' =>'Sans étoiles',
'1' => '1 étoile"',
'2' => '2 étoiles',
'3' => '3 étoiles',
'4' => '4 étoiles',
'5' => '5 étoiles',
) ;
$this->getElement('etoiles')->addMultiOptions($listeEtoiles) ;
如何将表单填充到控制器中:
$this->view->searchForm->populate($this->getRequest()->getPost()) ;
转储$this->getRequest()->getPost('etoiles')
时得到的信息:NULL
我通过复选框获得的信息:
<input id="etoiles-0" type="checkbox" checked="checked" value="0" name="etoiles[]">
我不明白。如果没有关于etoiles[]
的数据,如何选中此复选框??
我刚刚发现我的“Int”过滤器与此有关。我应该移除它吗?如果我想保留这个Int过滤器呢
没有验证器。我应该加一些吗?那InArray验证器呢?我的值数组使用字符串索引,因为我认为$\u POST数据是作为字符串传递的。这是个错误吗
任何评论或帮助将不胜感激:)这可能是字符串
'0'
和int0
(未选中单选表单元素)和null
之间的混淆,这是PHP的一个怪癖
尤其是当您将输入值筛选为int时,而您的值数组使用字符串索引(是否有原因不使用默认的InArray
validator?)
此外,我还看到
FormRadio
帮助程序使用in_数组($opt_value,$value)
而不使用严格的参数来确定选中的属性。老实说,这是我为了说明我的问题而复制/粘贴的。忘记验证器吧,没有验证器。我应该加一些吗?这个InArray
验证器怎么样?我的值数组使用字符串索引,因为我认为$\u POST
数据是作为字符串传递的。这是个错误吗?