0

我不明白为什么这个带有 value=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 验证器呢?我的 values 数组使用字符串索引,因为我认为 $_POST 数据是作为字符串传递的。这是一个错误吗?

任何评论或帮助将不胜感激:)

4

1 回答 1

0

这可能是 string'0'和 int之间的混淆0(未检查单选表单元素)和nullPHP 的一个怪癖。

特别是当您将输入值过滤为 int 时,而您的 values 数组使用字符串索引(您是否有理由不使用默认InArray验证器?)

此外,我看到FormRadio助手使用in_array($opt_value, $value)没有严格参数来确定选中的属性。

于 2012-10-08T13:51:38.813 回答