zend框架中的验证2

时间:2013-08-21 17:59:06

标签: zend-framework2 zend-form

我已经在zend framework 2中为表单定义了字段集。

$this->add ( array (
            'name' => 'unitnumber',
            'options' => array (
                    'label' => 'Unit Number:'
            )
    ) );

    $this->add ( array (
            'name' => 'streetdirprefix',
            'options' => array (
                    'label' => 'Street Direction Prefix:'
            )
    ) );

    $this->add ( array (
            'name' => 'streetnumber',
            'options' => array (
                    'label' => 'Street Number:'
            )
    ) );

我想仅为unitnumber设置必填字段。不适用于其他领域。

我写了一个函数..

public function getInputFilterSpecification()
{
    return array (
        'name' => array(
            'required' => true,
        )
    );
}

但是,它要求填写所有字段。任何人都可以帮助我。感谢。

2 个答案:

答案 0 :(得分:1)

$inputFilter->add(array(
            'name'     => 'artist',
            'required' => true,
            'filters'  => array(
                array('name' => 'StripTags'),
                array('name' => 'StringTrim'),
            ),
            'validators' => array(
                array(
                    'name'    => 'StringLength',
                    'options' => array(
                        'encoding' => 'UTF-8',
                        'min'      => 1,
                        'max'      => 100,
                    ),
                ),
            ),
        ));

<强>参考

http://framework.zend.com/manual/2.2/en/user-guide/forms-and-actions.html http://framework.zend.com/manual/2.2/en/modules/zend.input-filter.intro.html

答案 1 :(得分:0)

在Zend 2中,“InputFilter”更像“严格”模式。

即。它要求您指定InputFilter中提到的元素是否应将“required”值设置为TRUE或FALSE。

$this->add ( array (
        'name' => 'unitnumber',
        'required' => true,                   //Code Added
        'options' => array (
                'label' => 'Unit Number:'
        )
));

$this->add ( array (
        'name' => 'streetdirprefix',
        'required' => false,                   //Code Added
        'options' => array (
                'label' => 'Street Direction Prefix:'
        )
));

$this->add ( array (
        'name' => 'streetnumber',
        'required' => false,                   //Code Added
        'options' => array (
                'label' => 'Street Number:'
        )
));