Дата обновления перевода 2021-09-29

ExpressionLanguageSyntax

Это ограничение проверяет, чтобы значение было валидным, как выражение ExpressionLanguage.

New in version 5.1: Ограничение ExpressionLanguageSyntax было представлено в Symfony 5.1.

Применяется свойство или метод
к опциям
Класс ExpressionLanguageSyntax
Валидатор ExpressionLanguageSyntaxValidator

Базовое использование

Следующие ограничения гарантируют, что:

  • свойство promotion хранит значение, которое валидно, как выражение ExpressionLanguage;
  • свойство shippingOptions также гарантирует, чтобы выражение использует только определенные переменные.
  • Annotations
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    // src/Entity/Order.php
    namespace App\Entity;
    
    use Symfony\Component\Validator\Constraints as Assert;
    
    class Order
    {
        /**
         * @Assert\ExpressionLanguageSyntax
         */
        protected $promotion;
    
        /**
         * @Assert\ExpressionLanguageSyntax(
         *     allowedVariables={"user", "shipping_centers"}
         * )
         */
        protected $shippingOptions;
    }
    
  • Attributes
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    // src/Entity/Order.php
    namespace App\Entity;
    
    use Symfony\Component\Validator\Constraints as Assert;
    
    class Order
    {
        #[Assert\ExpressionLanguageSyntax]
        protected $promotion;
    
        #[Assert\ExpressionLanguageSyntax(
            allowedVariables: ['user', 'shipping_centers'],
        )]
        protected $shippingOptions;
    }
    
  • YAML
    1
    2
    3
    4
    5
    6
    7
    8
    # config/validator/validation.yaml
    App\Entity\Order:
        properties:
            promotion:
                - ExpressionLanguageSyntax: ~
            shippingOptions:
                - ExpressionLanguageSyntax:
                    allowedVariables: ['user', 'shipping_centers']
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <!-- 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\Order">
            <property name="promotion">
                <constraint name="ExpressionLanguageSyntax"/>
            </property>
            <property name="shippingOptions">
                <constraint name="ExpressionLanguageSyntax">
                    <option name="allowedVariables">
                        <value>user</value>
                        <value>shipping_centers</value>
                    </option>
                </constraint>
            </property>
        </class>
    </constraint-mapping>
    
  • PHP
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    // 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\ExpressionLanguageSyntax());
    
            $metadata->addPropertyConstraint('shippingOptions', new Assert\ExpressionLanguageSyntax([
                'allowedVariables' => ['user', 'shipping_centers'],
            ]));
        }
    }
    

Опции

allowedVariables

тип: array или null по умолчанию: null

Если эта опция определены, выражение может использовать только переменные, имена которых включены в эту опцию. Отмените настройку этой опции, или установите ее значение как null, чтобы позволить любые переменные.

groups

type: array | string

It defines the validation group or groups this constraint belongs to. Read more about validation groups.

message

тип: string по умолчанию: Это значение должно быть валидным выражением.

Это сообщение отображается при неудачной валидации.

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.

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.