Skip to content

Commit 7fcae45

Browse files
committed
minor #9428 Documented the "values" option of the Expression constraint (javiereguiluz)
This PR was squashed before being merged into the master branch (closes #9428). Discussion ---------- Documented the "values" option of the Expression constraint This fixes #9098. @ostrolucky I have problems defining the XML config of this example. Could you please help me? Thanks! Commits ------- 3aebcb7 Documented the "values" option of the Expression constraint
2 parents c3aa8cf + 3aebcb7 commit 7fcae45

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed

reference/constraints/Expression.rst

+88
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ gives you similar flexibility.
1212
| Options | - :ref:`expression <reference-constraint-expression-option>` |
1313
| | - `message`_ |
1414
| | - `payload`_ |
15+
| | - `values`_ |
1516
+----------------+-----------------------------------------------------------------------------------------------+
1617
| Class | :class:`Symfony\\Component\\Validator\\Constraints\\Expression` |
1718
+----------------+-----------------------------------------------------------------------------------------------+
@@ -253,3 +254,90 @@ message
253254
The default message supplied when the expression evaluates to false.
254255

255256
.. include:: /reference/constraints/_payload-option.rst.inc
257+
258+
values
259+
~~~~~~
260+
261+
**type**: ``array`` **default**: ``[]``
262+
263+
.. versionadded:: 4.1
264+
The ``values`` option was introduced in Symfony 4.1.
265+
266+
The values of the custom variables used in the expression. Values can be of any
267+
type (numeric, boolean, strings, null, etc.)
268+
269+
.. configuration-block::
270+
271+
.. code-block:: php-annotations
272+
273+
// src/Model/Analysis.php
274+
namespace App\Model;
275+
276+
use Symfony\Component\Validator\Constraints as Assert;
277+
278+
class Analysis
279+
{
280+
/**
281+
* @Assert\Expression(
282+
* "value + error_margin < threshold",
283+
* values = { "error_margin": 0.25, "threshold": 1.5 }
284+
* )
285+
*/
286+
private $metric;
287+
288+
// ...
289+
}
290+
291+
.. code-block:: yaml
292+
293+
# config/validator/validation.yaml
294+
App\Model\Analysis:
295+
properties:
296+
metric:
297+
- Expression:
298+
expression: "value + error_margin < threshold"
299+
values: { error_margin: 0.25, threshold: 1.5 }
300+
301+
.. code-block:: xml
302+
303+
<!-- config/validator/validation.xml -->
304+
<?xml version="1.0" encoding="UTF-8" ?>
305+
<constraint-mapping xmlns="http://symfony.com/schema/dic/constraint-mapping"
306+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
307+
xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping http://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd">
308+
309+
<class name="App\Model\Analysis">
310+
<property name="metric">
311+
<constraint name="Expression">
312+
<option name="expression">
313+
value + error_margin &lt; threshold
314+
</option>
315+
<option name="values">
316+
<value key="error_margin">0.25</value>
317+
<value key="threshold">1.5</value>
318+
</option>
319+
</constraint>
320+
</property>
321+
</class>
322+
</constraint-mapping>
323+
324+
.. code-block:: php
325+
326+
// src/Model/Analysis.php
327+
namespace App\Model;
328+
329+
use Symfony\Component\Validator\Constraints as Assert;
330+
use Symfony\Component\Validator\Mapping\ClassMetadata;
331+
332+
class Analysis
333+
{
334+
public static function loadValidatorMetadata(ClassMetadata $metadata)
335+
{
336+
$metadata->addPropertyConstraint('metric', new Assert\Expression(array(
337+
'expression' => 'value + error_margin < threshold',
338+
'values' => array('error_margin' => 0.25, 'threshold' => 1.5),
339+
)));
340+
}
341+
342+
// ...
343+
}

0 commit comments

Comments
 (0)