Проверка формы объекта миграции Symfony 4 с использованием validation.yaml - PullRequest
1 голос
/ 20 сентября 2019

Мы переносим довольно большое приложение Symfony 3.4 на 4.3 с помощью flex.Правила проверки для наших сущностей находятся в отдельном файле validation.yaml.Есть много сущностей и намного больше правил, поэтому мы не будем сейчас переходить на аннотации.

В документации описано, как использовать валидатор с отдельным файлом yaml.это работает нормально в тех редких случаях, когда мы используем валидатор напрямую, однако большинство проверок выполняется, когда формы отправляются следующим образом:

$userForm->handleRequest($request);
if ($userForm->isSubmitted() && $userForm->isValid()) {
   // persist form data
}

Здесь правила в validation.yml игнорируются, поэтому большинство нашихформы больше не проверяются.

Вся конфигурация для валидатора - это правило в /config/packages/validator.yaml

framework:
    validation:
        email_validation_mode: html5

И это правило в / config / packages / framework.yaml

framework:
    // other stuff
    validation: { enabled: true }

Мы тщательно изучили документы и Интернет, чтобы найти способ заставить проверки в формах работать снова, но не смогли найти или не смогли понять, как это сделать.Итак, вопрос:

Как заставить проверку формы работать с использованием правил проверки сущностей в отдельном файле yaml?

Редактировать:

Как и было задано, вот содержаниенашего config / validator / validation.yaml (первые три объекта, этот файл огромен. Искаженный отступ - это кодовый блок stackoverflow, не так в нашем файле, я постараюсь привести его в порядок)

AppBundle\Entity\TaxSetting:
    properties:
        tarif:
            - NotBlank:
                  message: 'tax.tarif.empty'
            - Range:
                  min: 0
                  max: 100
                  minMessage: 'tax.tarif.too_low'
                  maxMessage: 'tax.tarif.too_high'
        fiscalDifference:
            - NotBlank:
                  message: 'tax.fiscaldifference.empty'
            - Range:
                  min: -2147483646
                  max: 2147483646
                  minMessage: 'tax.fiscaldifference.too_low'
                  maxMessage: 'tax.fiscaldifference.too_high'
 AppBundle\Entity\AdministrationUser:
     properties:
         user:
            - NotBlank:
                 message: 'administrationuser.user.empty'
         administration:
             - NotBlank:
                 message: 'administrationuser.administration.empty'
AppBundle\Entity\AdministrationUserGroup:
    properties:
        userGroup:
            - NotBlank:
                   message: 'administrationusergroup.usergroup.empty'
        administration:
            - NotBlank:
                message:'administrationusergroup.administration.empty'

1 Ответ

0 голосов
/ 20 сентября 2019

Обнаружена проблема:

Мы следовали Руководству по миграции SymfonyCasts , в котором одним из последних шагов было перемещение пространства имен из \ AppBundle в \ App, мы даже выполнили глобальный поиск вкаталог / src для всех оставшихся упоминаний «AppBundle», но нам никогда не приходило в голову сделать то же самое в каталоге config, так как весь конфиг был либо новым, либо перемещен вручную, или мы подумали ...

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

Спасибо за ваше время и мнение всех, и извините за то, что не осознали это в довольно очевидной проблеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...