In addition to the new AtLeastOneOf, ExpressionLanguageSyntax and Hostname validators, Symfony 5.1 introduced other validator improvements.

Added alpha3 option to Country

Maxime Perrimond
Contributed by Maxime Perrimond in #35116

If you set the new alpha3 option to true in the Country constraint, the value is checked as a valid ISO 3166-1 alpha-3 three-letter country code (e.g. ARG = Argentina) instead of the default ISO 3166-1 alpha-2 two-letter country code (e.g. AR = Argentina).

Added alpha3 option to Language

Christian Flothmann
Contributed by Christian Flothmann in #35848

Similar to the previous feature, in the Language constraint we added a new alpha3 option to allow using ISO 639-2 three-letter language codes (swe = Swedish) instead of the default ISO 639-1 two-letter language code (sv = Swedish).

Added divisibleBy option to Count

Thomas Calvet
Contributed by Thomas Calvet in #35783

The new divisibleBy option added to the Count constraint checks that the the number of elements of the given collection is divisible by a certain number. If you need to perform this check in other values that aren't collections, use the DivisibleBy constraint.

Validation callables

janvernieuwe
Contributed by janvernieuwe in #31466

Sometimes you need to reuse Symfony's constraints in places like the Symfony Console, to validate the answer to a console question. That's why we've added a new Validation::createCallable() to create a callable based on the given constraints:

1
2
3
4
5
6
7
8
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);

The argument of createCallable() is variadic, so you can pass any number of constraints:

1
2
3
4
5
// ...
use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\Url;

$validation = Validation::createCallable(new Length(['max' => 255]), new Url());
Published in #Living on the edge