zf2 MultiCheckbox错误:在大海捞针中找不到输入

时间:2013-07-25 11:56:12

标签: zend-framework2

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

$this->add(array(
    'type' => 'Zend\Form\Element\MultiCheckbox',       
    'name' => 'user_group_id',
    'attributes' =>  array(
        'id' => 'user_group_id', 
        'options' => $tagData,
    ),
));   

这很好用。但是当我在$tagData中有加密值时,表单会产生此错误:

  

在大海捞针中找不到输入

我已尝试'disable_inarray_validator' => false'inarrayvalidator' => false,,但没有一个正在使用。

他们使用Select元素。如何为MultiCheckbox完成相同的工作?

4 个答案:

答案 0 :(得分:0)

$this->getElement('user_group_id')->clearValidators();

删除附加到user_group_id元素的所有验证器

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

答案 1 :(得分:0)

这里有两种方法

1)禁用特定字段上的验证器(如果ZF2允许您禁用其验证器)。暂时禁用后删除/隐藏干草堆错误的几个验证器。但是你仍然不会形成验证。

2)在发布数据后,您可能需要重新填充值/重置值到您的字段。事情是ZF2表单假定值应该在 Haystack 。为此,您可以执行类似

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

之后转储表格复选框元素并检查是否在那里设置了值或选项或w / e。

答案 2 :(得分:0)

我有这个代码,它似乎对我有用。 form-> 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'
                 ),),
        )); }'

请确保您使用multiheckbox帮助程序在视图中呈现复选框。

答案 3 :(得分:0)

试试这个:

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