Symfony Ограничение длины форм отменяет ограничение NotBlank - PullRequest
1 голос
/ 29 мая 2020

Итак, в моей форме есть поле для ввода пароля. На поле в формбилдере я добавил 2 ограничения; один, если поле пусто, и один, если пароль слишком короткий.

new NotBlank([
    'message' => 'reset.password.error.enterpassword',
]),
new Length([
    'min' => 6,
    'minMessage' => 'reset.password.error.passwordtooshort',
    // max length allowed by Symfony for security reasons
    'max' => 4096,
]),

Однако, когда я оставлю поле пароля пустым, оно будет использовать ограничение длины (я как бы понимаю, как пароль с длиной 0 меньше 6), но разве он не должен использовать ограничение NotBlank, поскольку оно определено?

Я также пытался поставить его после ограничения Length, но он все равно не работал.

1 Ответ

1 голос
/ 30 мая 2020

Поведение валидатора Length изменилось в последних symfony версиях.

Раньше не соответствовал пустым входам.

Опция allowEmptyString контролирует, разрешены ли пустые строки.

По умолчанию false, в то время как более старые symfony версии по умолчанию true.

См. Документацию Length # allowemptystring .

Set allowEmptyString на true, чтобы решить вашу проблему:

new Length([
    'allowEmptyString' => true,
    'min' => 6,
    'minMessage' => 'reset.password.error.passwordtooshort',
    // max length allowed by Symfony for security reasons
    'max' => 4096,
]),
new NotBlank([
    'message' => 'reset.password.error.enterpassword',
]),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...