New in Symfony 5.4: New Validation Constraints

The Symfony Validator component provides tens of validators to validate
that a given value matches some expected constraints (e.g. not blank, being a
valid IP address, being a string shorter than 255 characters, etc.)

In Symfony 5.4 we’ve expanded that list with two new validators/constraints.

CIDR Validator

Contributed by
Sorin Pop
in #43593.

This checks that a value is a valid CIDR (Classless Inter-Domain Routing)
notation. By default, it validates the CIDR’s IP and netmask both for version 4
and 6, with the option of allowing only one type of IP version to be valid.
It also supports a minimum and maximum range constraint in which the value of
the netmask is valid.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// src/Entity/RoutingTable.php
namespace AppEntity;

use SymfonyComponentValidatorConstraints as Assert;

class RoutingTable
{
#[AssertCidr]
protected $cidr;

#[AssertCidr(version: 6)]
protected $anotherCidr;

#[AssertCidr(netmaskMax: 20, version: 4)]
protected $yetAnotherCidr;
}

CssColor Validator

Contributed by
Mathieu Santostefano
in #40168.

CSS colors handling is common in applications like CMS and site builders.
Checking that some given value is a valid CSS color (e.g. to allow users
customize some themes) is not an easy feat because there are a lot of different
ways to define a color in CSS.

By default, this new constraint allows all the CSS color formats (RGB, HEX, HSL,
named colors, keywords, etc.) but you can restrict the formats allowed:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// src/Entity/ThemeColors.php
namespace AppEntity;

use SymfonyComponentValidatorConstraints as Assert;

class ThemeColors
{
#[AssertCssColor]
protected $bodyBackgroundColor;

#[AssertCssColor(
formats: AssertCssColor::HEX_LONG,
message: ‚The accent color must be a 6-character hexadecimal color.‘,
)]
protected $accentColor;

#[AssertCssColor(
formats: [AssertCssColor::BASIC_NAMED_COLORS, AssertCssColor::EXTENDED_NAMED_COLORS],
message: ‚The color ‚{{ value }}‚ is not a valid CSS color name.‘,
)]
protected $headerColor;
}

Sponsor the Symfony project.

Symfony Blog
Read More

Latest News

PHP-Releases

PHP 8.0.19 released!

PHP 7.4.29 released!