Cidr
Validates that a value is a valid CIDR (Classless Inter-Domain Routing) notation. By default, this will validate 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.
Applies to | property or method |
Class | Cidr |
Validator | CidrValidator |
Basic Usage
1 2 3 4 5 6 7 8 9 10
// src/Entity/NetworkSettings.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class NetworkSettings
{
#[Assert\Cidr]
protected string $cidrNotation;
}
1 2 3 4 5
# config/validator/validation.yaml
App\Entity\NetworkSettings:
properties:
cidrNotation:
- Cidr: ~
1 2 3 4 5 6 7 8 9 10 11 12
<!-- config/validator/validation.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<constraint-mapping xmlns="http://symfony.com/schema/dic/constraint-mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping https://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd">
<class name="App\Entity\NetworkSettings">
<property name="cidrNotation">
<constraint name="Cidr"/>
</property>
</class>
</constraint-mapping>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// src/Entity/NetworkSettings.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Mapping\ClassMetadata;
class NetworkSettings
{
// ...
public static function loadValidatorMetadata(ClassMetadata $metadata): void
{
$metadata->addPropertyConstraint('cidrNotation', new Assert\Cidr());
}
}
Note
As with most of the other constraints, null
and empty strings are
considered valid values. This is to allow them to be optional values.
If the value is mandatory, a common solution is to combine this constraint
with NotBlank.
Options
groups
type: array
| string
default: null
It defines the validation group or groups of this constraint. Read more about validation groups.
message
type: string
default: This value is not a valid CIDR notation.
This message is shown if the string is not a valid CIDR notation.
netmaskMin
type: integer
default: 0
It's a constraint for the lowest value a valid netmask may have.
netmaskMax
type: integer
default: 32
for IPv4 or 128
for IPv6
It's a constraint for the biggest value a valid netmask may have.
netmaskRangeViolationMessage
type: string
default: The value of the netmask should be between {{ min }} and {{ max }}.
This message is shown if the value of the CIDR's netmask is bigger than the
netmaskMax
value or lower than the netmaskMin
value.
You can use the following parameters in this message:
Parameter | Description |
---|---|
{{ min }} |
The minimum value a CIDR netmask may have |
{{ max }} |
The maximum value a CIDR netmask may have |
payload
type: mixed
default: null
This option can be used to attach arbitrary domain-specific data to a constraint. The configured payload is not used by the Validator component, but its processing is completely up to you.
For example, you may want to use several error levels to present failed constraints differently in the front-end depending on the severity of the error.
version
type: string
default: all
This determines exactly how the CIDR notation is validated and can take one of IP version ranges.
7.1
The support of all IP version ranges was introduced in Symfony 7.1.