Zend 2 Form Fieldset可选验证

时间:2014-07-10 14:12:22

标签: php forms validation zend-framework2 fieldset

我使用了很多嵌套的Fieldset,并且想知道是否可以为特定的字段集设置required = false,以便在其中没有错误时抛出错误(并保持我的表单验证) )?

例如,这是我的UserFieldset:

-> {User Fieldset}
-----> Name
-----> Email address
-----> [other user fields...]
-----> {Avatar Fieldset}
----------> File
----------> [other avatar fields...]
-----> {other fieldsets...}

在我的情况下,我希望有时强迫我的用户添加头像,有时不会..

当我想强制没有问题时,我的Avatar字段集中的输入文件会抛出错误并阻止验证过程。

但是当我希望我的用户只是注册并最终设置其头像时,我该怎么办呢?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用setValidationGroup()方法修改验证的元素。

documentation states

  

Zend \ Form为底层的InputFilter的setValidationGroup()方法提供了一个代理方法,允许我们只对表单元素的子集执行[validation]

这可以在控制器内完成,也可以在新工厂内完成;例如:

// Module.php
public function getFormElementConfig()
{
  return array(
      'factories' => array(
          'MyModule\Form\AvatarRegistrationFieldset' => function($fem) {

             $fieldset = new Form\AvatarFieldset();

             // Include the name of the elements you WANT to be validated
             $fieldset->setValidationGroup('foo', 'file');

             return $fieldset;
          }
      ),
  );
}