我有一个选择元素如下,我想使它成为非必需字段。但我无法这样做。它给了我错误“价值是必需的,不能为空”
$this->add(array(
'name' => 'civil_status',
'type' => 'Select',
'attributes' => array(
'id' => 'civil_status',
'class' => 'form-control',
),
'options' => array(
'empty_option' => 'Civil status',
'value_options' => array(
'married' => 'Married',
'single' => 'Single',
'other' => 'other',
),
)
));
我已将验证设置如下
$this->inputFilter->add($factory->createInput(array(
'name' => 'civil_status',
'required' => FALSE,
'allow_empty' => TRUE,
'filters' => array(
array('name' => 'StripTags'),
),
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
'min' => '2',
'max' => '255',
),
),
),
)));
我尝试从上面删除输入过滤器所需的内容,甚至更多我尝试从控制器中删除所需的验证,如下所示。但没有任何接缝可行。如果你们知道解决这个问题,请告诉我。
$form->getInputFilter()->get("civil_status")->setRequired(FALSE);
$form->getInputFilter()->get("civil_status")->setAllowEmpty(TRUE);
答案 0 :(得分:2)
选择在InArray验证器中构建你不需要在这里使用StringLength或过滤你只需要使用'required'=>是的,应该有效。
$this->inputFilter->add($factory->createInput(array(
'name' => 'civil_status',
'required' => false,
)));
我知道这可能是一个奇怪的问题,但是在你点击$ form-> IsValid()之前你是否已将InputFilter添加到你的表格中?