Zend framework2 zf2 MultiCheckbox错误:在haystack中找不到输入

Zend framework2 zf2 MultiCheckbox错误:在haystack中找不到输入,zend-framework2,Zend Framework2,我正在使用Zend\Form和以下代码显示一个动态复选框: $this->添加(数组)( 'type'=>'Zend\Form\Element\MultiCheckbox', 'name'=>'user\u group\u id', '属性'=>数组( 'id'=>'user\u group\u id', “选项”=>$tagData, ), )); 这个很好用。但是当我在$tagData中有加密值时,表单会产生以下错误: 在干草堆中找不到输入 我已经尝试了'disable\u inar

我正在使用
Zend\Form
和以下代码显示一个动态复选框:

$this->添加(数组)(
'type'=>'Zend\Form\Element\MultiCheckbox',
'name'=>'user\u group\u id',
'属性'=>数组(
'id'=>'user\u group\u id',
“选项”=>$tagData,
),
));   
这个很好用。但是当我在
$tagData
中有加密值时,表单会产生以下错误:

在干草堆中找不到输入

我已经尝试了
'disable\u inaray\u validator'=>false
'inarayvalidator'=>false,
但都没有起作用

它们使用
Select
元素。如何为
多复选框
实现同样的功能

$this->getElement('user_group_id')->clearValidators();
删除附加到用户组id元素的所有验证器


基本上,为什么在字段有效之前要加密??只有在验证所有字段后,才能对表单值执行任何操作。

这里有两种方法

1) 禁用特定字段上的验证程序(如果ZF2允许禁用其验证程序)。现在很少有验证程序在禁用后删除/隐藏Haystack错误。但你仍然无法得到表单验证

2) 发布数据后,您可能需要将值重新填充/重置值到字段中。问题是ZF2表单假定值应该在大草堆中。为此,您可以执行以下操作

$form->get('user_group_id')->setAttribute('option',$Request->getPost('WhateverYouAreGettingFromPostForThisCheckBox'));

在转储之后,您形成复选框元素,并检查您想要的值、选项或w/e是否设置在那里。

我有这个代码,它似乎适合我。表单->isValid不会将我标记为无效表单。 请注意,该类型等于“多复选框”

// Where do you get most of your client
        $this->add(array(
            'name' => Lead::GetClients1Mapping,
            'attributes' => array('class' => ''),
            'type' => 'multi-checkbox',
            'options' => array(
                 'label' => 'Where do you get most of your clients?',
                 'value_options' => array(
                         '0' => 'Word of Mouth',
                         '1' => 'Referrals',
                         '2' => 'Yellow Pages',
                         '3' => 'Print Newspapers',
                         '4' => 'TV / Radios',
                         '5' => 'Google / Yahoo/ Bing',
                         '6' => 'Social Media / Facebook / Twitter',
                         '7' => 'Others'
                 ),),
        )); }'
请确保您正在使用multicheckbox帮助程序呈现视图中的复选框。

尝试以下操作:

$this->add(array(
           'name' => 'user_group_id',
           'type' => 'text',
           'options' => array(
               'disable_inarray_validator' => true,
               'attributes' => array(
                    'id' => 'user_id',
                    'required' => true )));

我们应该在发布表单后在控制器上使用此选项吗?逻辑上,发布表单后,但我不知道您的场景。因为草垛是在形状匹配之后匹配的posted@noobie-好吧,我已经尝试了$form->getElement('user_tag_id')->clearValidators();。错误“调用未定义的方法User\Form\RegisterStepThree::getElement()”我尝试了setattribute。它不起作用(.我还尝试了其他答案,它为disable Validation提供了未定义的错误您在setAttribute中传递的post数据正在接收数组?