From 6e4246549519eac3c1030455d2b9c762c57e4246 Mon Sep 17 00:00:00 2001 From: Mathieu Piot Date: Thu, 5 May 2022 11:58:32 +0200 Subject: [PATCH] Deprecate ExpressionLanguageSyntax constraint --- reference/constraints.rst | 3 +- .../constraints/ExpressionLanguageSyntax.rst | 5 + reference/constraints/ExpressionSyntax.rst | 147 ++++++++++++++++++ 3 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 reference/constraints/ExpressionSyntax.rst diff --git a/reference/constraints.rst b/reference/constraints.rst index 34ed5d08dab..f3851bdb97a 100644 --- a/reference/constraints.rst +++ b/reference/constraints.rst @@ -14,7 +14,8 @@ Validation Constraints Reference constraints/Type constraints/Email - constraints/ExpressionLanguageSyntax + constraints/ExpressionLanguageSyntax (deprecated) + constraints/ExpressionSyntax constraints/Length constraints/Url constraints/Regex diff --git a/reference/constraints/ExpressionLanguageSyntax.rst b/reference/constraints/ExpressionLanguageSyntax.rst index 58309ed39d0..fda9360b8ae 100644 --- a/reference/constraints/ExpressionLanguageSyntax.rst +++ b/reference/constraints/ExpressionLanguageSyntax.rst @@ -1,6 +1,11 @@ ExpressionLanguageSyntax ======================== +.. deprecated:: 6.1 + + This constraint is deprecated since Symfony 6.1. + Use the``ExpressionSyntax`` constraint instead. + This constraint checks that the value is valid as an `ExpressionLanguage`_ expression. diff --git a/reference/constraints/ExpressionSyntax.rst b/reference/constraints/ExpressionSyntax.rst new file mode 100644 index 00000000000..9e97c3ffa38 --- /dev/null +++ b/reference/constraints/ExpressionSyntax.rst @@ -0,0 +1,147 @@ +ExpressionSyntax +================ + +This constraint checks that the value is valid as an `ExpressionLanguage`_ +expression. + +.. info:: 6.1 + + This constraint is deprecated since Symfony 6.1. + Use the``ExpressionSyntax`` constraint instead. + +========== =================================================================== +Applies to :ref:`property or method ` +Class :class:`Symfony\\Component\\Validator\\Constraints\\ExpressionSyntax` +Validator :class:`Symfony\\Component\\Validator\\Constraints\\ExpressionSyntaxValidator` +========== =================================================================== + +Basic Usage +----------- + +The following constraints ensure that: + +* the ``promotion`` property stores a value which is valid as an + ExpressionLanguage expression; +* the ``shippingOptions`` property also ensures that the expression only uses + certain variables. + +.. configuration-block:: + + .. code-block:: php-annotations + + // src/Entity/Order.php + namespace App\Entity; + + use Symfony\Component\Validator\Constraints as Assert; + + class Order + { + /** + * @Assert\ExpressionSyntax + */ + protected $promotion; + + /** + * @Assert\ExpressionSyntax( + * allowedVariables={"user", "shipping_centers"} + * ) + */ + protected $shippingOptions; + } + + .. code-block:: php-attributes + + // src/Entity/Order.php + namespace App\Entity; + + use Symfony\Component\Validator\Constraints as Assert; + + class Order + { + #[Assert\ExpressionSyntax] + protected $promotion; + + #[Assert\ExpressionSyntax( + allowedVariables: ['user', 'shipping_centers'], + )] + protected $shippingOptions; + } + + .. code-block:: yaml + + # config/validator/validation.yaml + App\Entity\Order: + properties: + promotion: + - ExpressionSyntax: ~ + shippingOptions: + - ExpressionSyntax: + allowedVariables: ['user', 'shipping_centers'] + + .. code-block:: xml + + + + + + + + + + + + + + + + + + .. code-block:: php + + // src/Entity/Student.php + namespace App\Entity; + + use Symfony\Component\Validator\Constraints as Assert; + use Symfony\Component\Validator\Mapping\ClassMetadata; + + class Order + { + public static function loadValidatorMetadata(ClassMetadata $metadata) + { + $metadata->addPropertyConstraint('promotion', new Assert\ExpressionSyntax()); + + $metadata->addPropertyConstraint('shippingOptions', new Assert\ExpressionSyntax([ + 'allowedVariables' => ['user', 'shipping_centers'], + ])); + } + } + +Options +------- + +allowedVariables +~~~~~~~~~~~~~~~~ + +**type**: ``array`` or ``null`` **default**: ``null`` + +If this option is defined, the expression can only use the variables whose names +are included in this option. Unset this option or set its value to ``null`` to +allow any variables. + +.. include:: /reference/constraints/_groups-option.rst.inc + +message +~~~~~~~ + +**type**: ``string`` **default**: ``This value should be a valid expression.`` + +This is the message displayed when the validation fails. + +.. include:: /reference/constraints/_payload-option.rst.inc + +.. _`ExpressionLanguage`: https://symfony.com/components/ExpressionLanguage