我不明白为什么populate()
检查带有值= 0的复选框,而没有关于此复选框的数据传递...
我的表单元素:
$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数据是作为字符串传递的。这是一个错误吗?
任何评论或帮助将不胜感激:)
答案 0 :(得分:0)
字符串'0'
和int 0
(对于无线电表单元素未选中)和null
之间可能存在混淆,这是PHP的一个怪癖。
特别是当您将输入值过滤为int时,而您的values数组使用字符串索引(是否有理由不使用默认的InArray
验证器?)
此外,我发现FormRadio
帮助程序使用in_array($opt_value, $value)
而没有strict参数来确定已检查的属性。