我正在使用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
完成相同的工作?
答案 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 )));