Length

Валидирует, что длина заданной строки находится между некоторым минимальным и максимальным значением.

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

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

Чтобы верифицировать, что длина поля firstName класса находится между "2" и "50", вы можете захотеть добавить следующее:

  • Annotations
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    // src/AppBundle/Entity/Participant.php
    namespace AppBundle\Entity;
    
    use Symfony\Component\Validator\Constraints as Assert;
    
    class Participant
    {
        /**
         * @Assert\Length(
         *      min = 2,
         *      max = 50,
         *      minMessage = "Ваше имя должно быть как минимум {{ limit }} символов",
         *      maxMessage = "Ваше имя не должно быть длиннее {{ limit }} символов"
         * )
         */
         protected $firstName;
    }
    
  • YAML
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # src/AppBundle/Resources/config/validation.yml
    AppBundle\Entity\Participant:
        properties:
            firstName:
                - Length:
                    min: 2
                    max: 50
                    minMessage: 'Ваше имя должно быть как минимум {{ limit }} символов'
                    maxMessage: 'Ваше имя не должно быть длиннее {{ limit }} символов'
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <!-- src/AppBundle/Resources/config/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="AppBundle\Entity\Participant">
            <property name="firstName">
                <constraint name="Length">
                    <option name="min">2</option>
                    <option name="max">50</option>
                    <option name="minMessage">
                        Ваше имя должно быть как минимум {{ limit }} символов
                    </option>
                    <option name="maxMessage">
                        Ваше имя не должно быть длиннее {{ limit }} символов
                    </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/AppBundle/Entity/Participant.php
    namespace AppBundle\Entity;
    
    use Symfony\Component\Validator\Mapping\ClassMetadata;
    use Symfony\Component\Validator\Constraints as Assert;
    
    class Participant
    {
        public static function loadValidatorMetadata(ClassMetadata $metadata)
        {
            $metadata->addPropertyConstraint('firstName', new Assert\Length(array(
                'min'        => 2,
                'max'        => 50,
                'minMessage' => 'Ваше имя должно быть как минимум {{ limit }} символов',
                'maxMessage' => 'Ваше имя не должно быть длиннее {{ limit }} символов',
            )));
        }
    }
    

Опции

min

тип: integer

Эта обязательная опция - это значение длины "min". Валидация будет неудачной, если длина заданного значения меньше, чем это минимальное значение.

Важно отметить, что значения NULL и пустые строки считаются всё равно валидными, даже если ограничение требовало минимальную длину. Валидаторы запускаются только если значение не пустое.

max

тип: integer

Эта обязательная опция - это значение длины "max". Валидация будет неудачной, если длина заданного значения больше, чем это минимальное значение.

charset

тип: string по умолчанию: UTF-8

Набор символов, используемый при вычислении длины значения. PHP-функция grapheme_strlen используется, если она доступна. Если нет, то используется PHP-функция mb_strlen, если она доступна. Если не доступна ни одна, то используется PHP-функция strlen.

minMessage

тип: string по умолчанию: Это значение слишком короткое. Оно должно иметь {{ limit }} или больше символов.

Сообщение, отображаемое, если длина основоположного значеия меньше, чем опция min.

maxMessage

тип: string по умолчанию: Это значение слишком длинное. Оно должно иметь {{ limit }} или меньше символов.

Сообщение, отображаемое, если длина основоположного значеия больще, чем опция max.

exactMessage

тип: string по умолчанию: Это значение должно иметь ровно {{ limit }} символов.

Сообщение, отображаемое, если минимальное и максимальное значения равны, а длина основоположного значения не равняется точно этому значению.

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.