Type

Валидирует, что значение является конкретным типом данных. Например, если переменная должна быть массивом, то вы можете использовать это ограничение с опцией типа array, чтобы валидировать это.

Применяется к свойству или методу
Опции
Класс Type
Валидатор TypeValidator

Базовое применение

Проверит, является ли firstName типом stringage - integer.

  • Annotations
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    // src/Entity/Author.php
    namespace App\Entity;
    
    use Symfony\Component\Validator\Constraints as Assert;
    
    class Author
    {
        /**
         * @Assert\Type("string")
         */
        protected $firstName;
    
        /**
         * @Assert\Type(
         *     type="integer",
         *     message="The value {{ value }} is not a valid {{ type }}."
         * )
         */
        protected $age;
    }
    
  • YAML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    # config/validator/validation.yaml
    App\Entity\Author:
        properties:
            firstName:
                - Type: string
    
            age:
                - Type:
                    type: integer
                    message: The value {{ value }} is not a valid {{ type }}.
    
  • 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 http://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd">
    
        <class name="App\Entity\Author">
            <property name="firstName">
                <constraint name="Type">
                    <option name="type">string</option>
                </constraint>
            </property>
            <property name="age">
                <constraint name="Type">
                    <option name="type">integer</option>
                    <option name="message">The value {{ value }} is not a valid {{ type }}.</option>
                </constraint>
            </property>
        </class>
    </constraint-mapping>
    
  • PHP
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    // src/Entity/Author.php
    namespace App\Entity;
    
    use Symfony\Component\Validator\Mapping\ClassMetadata;
    use Symfony\Component\Validator\Constraints as Assert;
    
    class Author
    {
        public static function loadValidatorMetadata(ClassMetadata $metadata)
        {
            $metadata->addPropertyConstraint('firstName', new Assert\Type('string'));
    
            $metadata->addPropertyConstraint('age', new Assert\Type(array(
                'type'    => 'integer',
                'message' => 'The value {{ value }} is not a valid {{ type }}.',
            )));
        }
    }
    

Опции

type

тип: string [опция по умолчанию]

Эта обязательная опция является полным именем класса или одним из типов данных PHP, как определяется PHP-функциями is_().

Также, вы можете использовать функции ctype_() изз соответствующих встроенных PHP-расширений. Рассмотрите список функций ctype:

Убедитесь, что установлена правильная локаль перед тем, как использовать одну из них.

message

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

Сообщение, отображаемое, если основоположные данные не являются заданным типом.

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.