Новое в Symfony 5.1: Улучшения валидатора

В дополнение к новым валидаторам AtLeastOneOf, ExpressionLanguageSyntax и Hostname, Symfony 5.1 представил другие улучшения валидатора.

Добавлен вариант alpha3 для страны

Если вы установите для новой опции alpha3 значение true в валидатора Country, значение будет проверено как действительный трехбуквенный код страны ISO 3166-1 alpha-3 (например, ARG = Аргентина) вместо стандартного ISO 3166-1 alpha-2. двухбуквенный код страны (например, AR = Аргентина).

Добавлен параметр alpha3 для языка

Подобно предыдущей функции, в языковом валидаторе добавили новую опцию alpha3, позволяющую использовать трехбуквенные языковые коды ISO 639-2 (swe = шведский) вместо двухбуквенного языкового кода ISO 639-1 по умолчанию (sv = Swedish ).

Добавлена опция divisibleBy для Count

Новая опция divisibleBy, добавленная к валидатору Count, проверяет, делится ли количество элементов данной коллекции на определенное число. Если вам нужно выполнить эту проверку для других значений, не являющихся коллекциями, используйте валидатор DivisibleBy.

Вызовы проверки

Иногда вам нужно повторно использовать валидатор Symfony в таких местах, как консоль Symfony, чтобы проверить ответ на вопрос консоли. Для этого добавили новый Validation::createCallable() для создания вызываемого объекта на основе заданных ограничений:

use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\Validator\Constraints\NotNull;
use Symfony\Component\Validator\Validation;

$io = new SymfonyStyle($input, $output);
$validation = Validation::createCallable(new NotBlank());

$wsdl = $io->ask('Wsdl location URL', null, $validation);

Аргумент createCallable() является вариативным, поэтому вы можете передать любое количество ограничений:

// ...
use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\Url;

$validation = Validation::createCallable(new Length(['max' => 255]), new Url());