Skip to content

Commit 24d8f34

Browse files
committed
[Validator] Add docs for number constraints
* Positive constraint * PositiveOrZero constraint * Negative constraint
1 parent cd5c7eb commit 24d8f34

File tree

4 files changed

+244
-0
lines changed

4 files changed

+244
-0
lines changed

reference/constraints/Negative.rst

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
Negative
2+
========
3+
4+
Validates that a value is a negative number. To force that a value is a negative
5+
number or equal to zero, see :doc:`/reference/constraints/NegativeOrZero`.
6+
To force a value is positive, see :doc:`/reference/constraints/Positive`.
7+
8+
========== ===================================================================
9+
Applies to :ref:`property or method <validation-property-target>`
10+
Options - `groups`_
11+
- `message`_
12+
- `payload`_
13+
Class :class:`Symfony\\Component\\Validator\\Constraints\\Negative`
14+
Validator :class:`Symfony\\Component\\Validator\\Constraints\\LesserThanValidator`
15+
========== ===================================================================
16+
17+
Basic Usage
18+
-----------
19+
20+
The following constraints ensure that:
21+
22+
* the ``withdraw`` of a bankaccount ``TransferItem`` is a negative number (greater than zero)
23+
24+
.. configuration-block::
25+
26+
.. code-block:: php-annotations
27+
28+
// src/Entity/Freezer.php
29+
namespace App\Entity;
30+
31+
use Symfony\Component\Validator\Constraints as Assert;
32+
33+
class TransferItem
34+
{
35+
36+
/**
37+
* @Assert\Negative
38+
*/
39+
protected $withdraw;
40+
}
41+
42+
.. code-block:: yaml
43+
44+
# config/validator/validation.yaml
45+
App\Entity\TransferItem:
46+
properties:
47+
withdraw:
48+
- Negative
49+
50+
.. code-block:: xml
51+
52+
<!-- config/validator/validation.xml -->
53+
<?xml version="1.0" encoding="UTF-8" ?>
54+
<constraint-mapping xmlns="http://symfony.com/schema/dic/constraint-mapping"
55+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
56+
xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping https://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd">
57+
58+
<class name="App\Entity\TransferItem">
59+
<property name="withdraw">
60+
<constraint name="Negative"></constraint>
61+
</property>
62+
</class>
63+
</constraint-mapping>
64+
65+
.. code-block:: php
66+
67+
// src/Entity/TransferItem.php
68+
namespace App\Entity;
69+
70+
use Symfony\Component\Validator\Mapping\ClassMetadata;
71+
use Symfony\Component\Validator\Constraints as Assert;
72+
73+
class TransferItem
74+
{
75+
public static function loadValidatorMetadata(ClassMetadata $metadata)
76+
{
77+
$metadata->addPropertyConstraint('withdraw', new Assert\Negative;
78+
}
79+
}

reference/constraints/Positive.rst

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
Positive
2+
========
3+
4+
Validates that a value is a positive number. To force that a value is positive
5+
number or equal to zero, see :doc:`/reference/constraints/PositiveOrZero`.
6+
To force a value is negative, see :doc:`/reference/constraints/Negative`.
7+
8+
========== ===================================================================
9+
Applies to :ref:`property or method <validation-property-target>`
10+
Options - `groups`_
11+
- `message`_
12+
- `payload`_
13+
Class :class:`Symfony\\Component\\Validator\\Constraints\\Positive`
14+
Validator :class:`Symfony\\Component\\Validator\\Constraints\\GreaterThanValidator`
15+
========== ===================================================================
16+
17+
Basic Usage
18+
-----------
19+
20+
The following constraints ensure that:
21+
22+
* the ``income`` of an ``Employee`` is a positive number (greater than zero)
23+
24+
.. configuration-block::
25+
26+
.. code-block:: php-annotations
27+
28+
// src/Entity/Employee.php
29+
namespace App\Entity;
30+
31+
use Symfony\Component\Validator\Constraints as Assert;
32+
33+
class Employee
34+
{
35+
36+
/**
37+
* @Assert\Positive
38+
*/
39+
protected $income;
40+
}
41+
42+
.. code-block:: yaml
43+
44+
# config/validator/validation.yaml
45+
App\Entity\Employee:
46+
properties:
47+
income:
48+
- Positive
49+
50+
.. code-block:: xml
51+
52+
<!-- config/validator/validation.xml -->
53+
<?xml version="1.0" encoding="UTF-8" ?>
54+
<constraint-mapping xmlns="http://symfony.com/schema/dic/constraint-mapping"
55+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
56+
xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping https://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd">
57+
58+
<class name="App\Entity\Employee">
59+
<property name="income">
60+
<constraint name="Positive"></constraint>
61+
</property>
62+
</class>
63+
</constraint-mapping>
64+
65+
.. code-block:: php
66+
67+
// src/Entity/Employee.php
68+
namespace App\Entity;
69+
70+
use Symfony\Component\Validator\Mapping\ClassMetadata;
71+
use Symfony\Component\Validator\Constraints as Assert;
72+
73+
class Employee
74+
{
75+
public static function loadValidatorMetadata(ClassMetadata $metadata)
76+
{
77+
$metadata->addPropertyConstraint('income', new Assert\Positive;
78+
}
79+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
PositiveOrZero
2+
==============
3+
4+
Validates that a value is a positive number or equal to zero. To force that
5+
a value is only a positiven umber, see :doc:`/reference/constraints/Positive`.
6+
To force a value is negative or equal to zero,
7+
see :doc:`/reference/constraints/NegativeOrZero`.
8+
9+
========== ===================================================================
10+
Applies to :ref:`property or method <validation-property-target>`
11+
Options - `groups`_
12+
- `message`_
13+
- `payload`_
14+
Class :class:`Symfony\\Component\\Validator\\Constraints\\PositiveOrZero`
15+
Validator :class:`Symfony\\Component\\Validator\\Constraints\\GreaterThanOrEqualValidator`
16+
========== ===================================================================
17+
18+
Basic Usage
19+
-----------
20+
21+
The following constraints ensure that:
22+
23+
* the number of ``siblings`` of a ``Person`` is positive or zero
24+
25+
.. configuration-block::
26+
27+
.. code-block:: php-annotations
28+
29+
// src/Entity/Person.php
30+
namespace App\Entity;
31+
32+
use Symfony\Component\Validator\Constraints as Assert;
33+
34+
class Person
35+
{
36+
/**
37+
* @Assert\PositiveOrZero
38+
*/
39+
protected $siblings;
40+
}
41+
42+
.. code-block:: yaml
43+
44+
# config/validator/validation.yaml
45+
App\Entity\Person:
46+
properties:
47+
siblings:
48+
- PositiveOrZero
49+
50+
.. code-block:: xml
51+
52+
<!-- config/validator/validation.xml -->
53+
<?xml version="1.0" encoding="UTF-8" ?>
54+
<constraint-mapping xmlns="http://symfony.com/schema/dic/constraint-mapping"
55+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
56+
xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping https://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd">
57+
58+
<class name="App\Entity\Person">
59+
<property name="siblings">
60+
<constraint name="PositiveOrZero"></constraint>
61+
</property>
62+
</class>
63+
</constraint-mapping>
64+
65+
.. code-block:: php
66+
67+
// src/Entity/Person.php
68+
namespace App\Entity;
69+
70+
use Symfony\Component\Validator\Mapping\ClassMetadata;
71+
use Symfony\Component\Validator\Constraints as Assert;
72+
73+
class Person
74+
{
75+
public static function loadValidatorMetadata(ClassMetadata $metadata)
76+
{
77+
$metadata->addPropertyConstraint('siblings', new Assert\PositiveOrZero);
78+
}
79+
}

reference/constraints/map.rst.inc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,13 @@ Comparison Constraints
3838
* :doc:`Range </reference/constraints/Range>`
3939
* :doc:`DivisibleBy </reference/constraints/DivisibleBy>`
4040

41+
Number Constraints
42+
~~~~~~~~~~~~~~~~~~
43+
* :doc:`Date </reference/constraints/Positive>`
44+
* :doc:`Date </reference/constraints/PositiveOrZero>`
45+
* :doc:`Date </reference/constraints/Negative>`
46+
* :doc:`Date </reference/constraints/NegativeOrZero>`
47+
4148
Date Constraints
4249
~~~~~~~~~~~~~~~~
4350

0 commit comments

Comments
 (0)