Загрузка различных проверок Symfony динамически без групп

#php #symfony #validation

#php #symfony #проверка

Вопрос:

Я хочу добавить больше проверок динамически внутри контроллера действий. У меня есть общие проверки, config/validator/validation.yaml но я хочу загрузить и добавить другие проверки, зависит от логики внутри контроллера действий в Symfony 4. Я не хочу делать это с группами проверки, потому что у меня будет много возможностей, и я предпочитаю разные файлы для каждой логики.

 public function myAction(Request $request, ValidatorInterface $validator) 
{
...
    if($something){
        //load a validation1.yaml
    }
    else{
        //load a validation2.yaml
    }
    $violations = $validator->validate($user);
...
}
  

Общая проверка.yaml:

 AppEntityUser:
  properties:
    email:
     - NotBlank:
         message: "'email' is a mandatory field."

  

В моем validation1.yaml:

 AppEntityUser:
  properties:
    firstName:
      - NotBlank:
          message: "'FirstName' is a mandatory field."
  

И другие ограничения в моем validation2.yaml:

 AppEntityUser:
  properties:

  

Комментарии:

1. Привет, а как насчет групп проверки? symfony.com/doc/current/validation/groups.html

2. @Nek Я не хочу делать это с группами, потому что у меня должно быть много групп. И если я захочу добавить больше групп в будущем, мне придется добавить эту группу к каждому ограничению. Я предпочитаю иметь partner1.yaml, partner2.yaml … чем группы [partner1, partner2 …] в каждом свойстве

3. Затем вам нужно настроить средство проверки самостоятельно. Вы можете создать фабрику валидаторов (службу Symfony), которая создает валидатор для вас. См. symfony.com/doc/current/components/validator /…