Php zend:使用$form->;填充复选框数组;填充();来自控制器
我们有一个带有文本输入字段和复选框数组的Php zend:使用$form->;填充复选框数组;填充();来自控制器,php,zend-framework,checkbox,zend-form,Php,Zend Framework,Checkbox,Zend Form,我们有一个带有文本输入字段和复选框数组的zend表单,如下所示- <input class="checkbox_Category" type="checkbox" name="tag[]" value="19"> somename1 <br/> <input class="checkbox_Category" type="checkbox" name="tag[]" value="20"> somename2 <br/> <input cla
zend
表单,如下所示-
<input class="checkbox_Category" type="checkbox" name="tag[]" value="19"> somename1 <br/>
<input class="checkbox_Category" type="checkbox" name="tag[]" value="20"> somename2 <br/>
<input class="checkbox_Category" type="checkbox" name="tag[]" value="21"> somename3 <br/>
somename1
somename2
somename3
使用
$formObject->populate($formDataArray)
在控制器中填充整个表单中的数据。所有文本输入字段似乎都填充得很好,但复选框没有。在$formDataArray中,复选框的数据格式为
[tag]=>数组([0]=>20[1]=>19)
以及其他表单数据,如-[firstName]=>“somename”等。
我无法确定表单所需的数据格式,以便使用populate()填充数据 hi可能与您作为数组指定的名称有问题,请按以下方式更改
<input class="checkbox_Category" type="checkbox" name="tag" value="19"> somename1 <br/>
<input class="checkbox_Category" type="checkbox" name="tag" value="20"> somename2 <br/>
<input class="checkbox_Category" type="checkbox" name="tag" value="21"> somename3 <br/>
somename1
somename2
somename3
请让我知道我是否可以在没有看到您的Zend_表单代码的情况下进一步帮助您,这是非常困难的。然而,我经常看到人们在Zend框架中将“checkbox”元素与“multiCheckbox”元素弄错。我知道-这有点混乱-但checkbox是一个带有开/关值的复选框。MultiCheckbox处理多个值——我认为这正是您试图实现的目标。让我向您展示一个快速的表单,它将工作并生成上面的HTML
class Application_Form_Test extends Zend_Form
{
public function init()
{
$this->setMethod('post');
$multiOptions = array(
19 => 'somename1',
20 => 'somename2',
21 => 'somename3'
);
$this->addElement('multiCheckbox', 'tag', array(
'multiOptions'=>$multiOptions
));
$this->addElement('submit', 'submitbutton');
}
}
现在,如果你使用像
$form->populate($this->getRequest()->getPost());
在控制器中,它将按预期填充
希望这有帮助 您的格式是正确的,因此问题不在您发布的代码中。如果勾选某些复选框并提交表单,但缺少必填字段(因此表单将重新显示),复选框是否仍保持勾选状态?您好。。我确信数组是必需的,因为这就是我们迭代和获取检查值的方式。但是当我使用zend form时,它对我来说很好,就像$objEthnicity=new zend_form_Element_MultiCheckbox(“种族”);$objEthnicity->addMultiOptions($ocidentity)->setLabel($this->translate('LABEL_ocidentity'))->setValue(explode('explode('ocidentity'))->addFilter('StripTags')->removeDecorator('HtmlTag')->removeDecorator('HtmlTag')->removeDecorator('LABEL')->setAttrib('no,'2');