Zend 2 Form Fieldset необязательная проверка

Я использую много вложенных наборов полей, и мне было интересно, можно ли установить required = false для определенного набора полей, чтобы не вызывать ошибку, если она есть (и поддерживать проверку моей формы)?

Например, это мой UserFieldset:

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

В моей ситуации я хочу иногда заставить своего пользователя добавить аватар, а иногда нет.

Когда я хочу, чтобы проблем не было, мой входной файл в моем наборе полей аватара выдает ошибку и блокирует процесс проверки.

Но когда я хочу, чтобы мой пользователь просто зарегистрировался и в конечном итоге установил свой аватар, как я могу это сделать?

Спасибо за помощь.


person Vincent Caggiari    schedule 10.07.2014    source источник


Ответы (1)


Вы можете изменить элементы, которые проверяются с помощью метода setValidationGroup().

состояния документации

Zend\Form предоставляет прокси-метод для базового метода setValidationGroup() базового InputFilter, что позволяет нам выполнять [проверку] только для подмножества элементов формы.

Это можно сделать внутри контроллера или, возможно, на новой фабрике; Например:

// 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;
          }
      ),
  );
}
person AlexP    schedule 10.07.2014
comment
Если я использую setValidationGroup в своем наборе полей аватара (страница регистрации), он больше не будет проверяться, и я не смогу получить из него данные, если мой посетитель в конечном итоге загрузит файл. - person Vincent Caggiari; 10.07.2014
comment
@VincentCaggiari Вы можете оставить элемент файла в качестве необязательного поля, а затем только при регистрации включить его в группу проверки. - person AlexP; 10.07.2014