Zend框架2表单选择元素集必需false

时间:2013-11-18 05:04:14

标签: php validation zend-framework2

我有一个选择元素如下,我想使它成为非必需字段。但我无法这样做。它给了我错误“价值是必需的,不能为空”

        $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);

1 个答案:

答案 0 :(得分:2)

选择在InArray验证器中构建你不需要在这里使用StringLength或过滤你只需要使用'required'=>是的,应该有效。

$this->inputFilter->add($factory->createInput(array(
                    'name' => 'civil_status',
                    'required' => false,
        )));

我知道这可能是一个奇怪的问题,但是在你点击$ form-> IsValid()之前你是否已将InputFilter添加到你的表格中?

相关问题