Zend framework Zend_表单:在值为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',

我不明白为什么值为0的复选框被
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'
和int
0
(未选中单选表单元素)和
null
之间的混淆,这是PHP的一个怪癖

尤其是当您将输入值筛选为int时,而您的值数组使用字符串索引(是否有原因不使用默认的
InArray
validator?)


此外,我还看到
FormRadio
帮助程序使用
in_数组($opt_value,$value)
而不使用严格的参数来确定选中的属性。

老实说,这是我为了说明我的问题而复制/粘贴的。忘记验证器吧,没有验证器。我应该加一些吗?这个
InArray
验证器怎么样?我的值数组使用字符串索引,因为我认为
$\u POST
数据是作为字符串传递的。这是个错误吗?