Spec-Zone.ru › Yii 2.0

Основные валидаторы

  1. boolean
  2. captcha
  3. compare
  4. date
  5. default
  6. double
  7. each
  8. email
  9. exist
  10. file
  11. filter
  12. image
  13. ip
  14. in
  15. integer
  16. match
  17. number
  18. required
  19. safe
  20. string
  21. trim
  22. unique
  23. url

Yii предоставляет набор часто используемых основных валидаторов, расположенных в основном в пространстве имён yii\validators. Вместо использования длинных имён классов валидаторов, можно использовать псевдонимы для указания использования этих основных валидаторов. Например, можно использовать псевдоним required для ссылки на класс yii\validators\RequiredValidator:

public function rules()
{
    return [
        [['email', 'password'], 'required'],
    ];
}

Свойство yii\validators\Validator::$builtInValidators объявляет все поддерживаемые псевдонимы валидаторов.

В дальнейшем мы опишем основное использование и свойства каждого основного валидатора.

boolean

[
    // checks if "selected" is either 0 or 1, regardless of data type
    ['selected', 'boolean'],

    // checks if "deleted" is of boolean type, either true or false
    ['deleted', 'boolean', 'trueValue' => true, 'falseValue' => false, 'strict' => true],
]

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

  • trueValue: значение, представляющее true. По умолчанию '1'.
  • falseValue: значение, представляющее false. По умолчанию '0'.
  • strict: нужно ли типу входного значения соответствовать типу trueValue и falseValue. По умолчанию false.

Примечание: Поскольку все входные данные, отправленные через HTML-формы, являются строками, обычно следует оставлять свойство strict как false.

captcha

[
    ['verificationCode', 'captcha'],
]

Этот валидатор обычно используется вместе с yii\captcha\CaptchaAction и yii\captcha\Captcha, чтобы убедиться, что входное значение совпадает с кодом проверки, отображаемым виджетом CAPTCHA.

  • caseSensitive: учитывать ли регистр при сравнении кода проверки. По умолчанию false.
  • captchaAction: маршрут, соответствующий действию CAPTCHA, которое рендерит изображение CAPTCHA. По умолчанию 'site/captcha'.
  • skipOnEmpty: можно ли пропустить валидацию, если входное значение пустое. По умолчанию false, что означает обязательность входного значения.

compare

[
    // validates if the value of "password" attribute equals to that of "password_repeat"
    ['password', 'compare'],

    // same as above but with explicitly specifying the attribute to compare with
    ['password', 'compare', 'compareAttribute' => 'password_repeat'],

    // validates if age is greater than or equal to 30
    ['age', 'compare', 'compareValue' => 30, 'operator' => '>=', 'type' => 'number'],
]

Этот валидатор сравнивает указанное входное значение с другим и проверяет соответствие их взаимоотношений, как задано свойством operator.

  • compareAttribute: имя атрибута, значение которого должно быть сравнено. Когда валидатор используется для проверки атрибута, значение этого свойства по умолчанию будет именем атрибута с добавленным суффиксом _repeat. Например, если проверяемым атрибутом является password, то это свойство будет по умолчанию password_repeat.
  • compareValue: постоянное значение, с которым должно сравниваться входное значение. Если и это свойство, и compareAttribute указаны, будет использовано значение этого свойства.
  • operator: оператор сравнения. По умолчанию ==, означающий проверку равенства входного значения значению compareAttribute или compareValue. Поддерживаются следующие операторы:
    • ==: проверка равенства двух значений. Сравнение выполняется в нестрогом режиме.
    • ===: проверка равенства двух значений. Сравнение выполняется в строгом режиме.
    • !=: проверка неравенства двух значений. Сравнение выполняется в нестрогом режиме.
    • !==: проверка неравенства двух значений. Сравнение выполняется в строгом режиме.
    • >: проверка, больше ли проверяемое значение, чем сравниваемое.
    • >=: проверка, больше или равно ли проверяемое значение, чем сравниваемое.
    • <: проверка, меньше ли проверяемое значение, чем сравниваемое.
    • <=: проверка, меньше или равно ли проверяемое значение, чем сравниваемое.
  • type: Тип сравнения по умолчанию - 'строка', что означает сравнение значений побайтово. При сравнении чисел убедитесь, что свойство $type установлено в 'число' для включения числового сравнения.

Сравнение значений дат

Валидатор compare может использоваться только для сравнения строк и чисел. Если вам необходимо сравнить значения, такие как даты, у вас есть два варианта. Для сравнения даты со значением по умолчанию можно просто использовать валидатор date и указать его свойства $min или $max. Если вам необходимо сравнить две даты, введенные в форму, например, поле fromDate и поле toDate, вы можете использовать комбинацию валидаторов compare и date, как показано ниже:

['fromDate', 'date', 'timestampAttribute' => 'fromDate'],
['toDate', 'date', 'timestampAttribute' => 'toDate'],
['fromDate', 'compare', 'compareAttribute' => 'toDate', 'operator' => '<', 'enableClientValidation' => false],

Так как валидаторы выполняются в порядке их указания, сначала будет проверено, являются ли значения, введенные в поля fromDate и toDate, допустимыми датами, и если да, они будут преобразованы в читаемый машиной формат. После этого эти два значения будут сравнены с помощью валидатора compare. Клиентская валидация отключена, так как она будет работать только на стороне сервера, так как валидатор дат в настоящее время не предоставляет клиентскую валидацию, поэтому $enableClientValidation также установлен в false для валидатора compare.

date

Валидатор date имеет три сокращения:

[
    [['from_date', 'to_date'], 'date'],
    [['from_datetime', 'to_datetime'], 'datetime'],
    [['some_time'], 'time'],
]

Этот валидатор проверяет, является ли входное значение датой, временем или датой и временем в правильном формате. При необходимости он может преобразовать входное значение в метку времени Unix или другой читаемый машиной формат и сохранить его в атрибуте, указанном через timestampAttribute.

  • format: формат даты/времени, в котором должно быть значение, проверяемое валидатором. Это может быть шаблон даты и времени, как описано в руководстве ICU. В качестве альтернативы, это может быть строка, начинающаяся с php:, представляющая формат, распознаваемый классом PHP Datetime. Обратитесь к http://php.net/manual/en/datetime.createfromformat.php для получения информации о поддерживаемых форматах. Если это не задано, оно примет значение Yii::$app->formatter->dateFormat. См. документацию API для получения дополнительной информации.

  • timestampAttribute: имя атрибута, которому этот валидатор может назначить метку времени Unix, преобразованную из входной даты/времени. Это может быть тот же атрибут, что и тот, который проверяется. Если это так, оригинальное значение будет перезаписано значением метки времени после валидации. Смотрите "Обработка ввода даты с DatePicker" для примера использования.

    С версии 2.0.4 для этого атрибута можно указать формат и часовой пояс с помощью $timestampAttributeFormat и $timestampAttributeTimeZone.

    Обратите внимание, что при использовании timestampAttribute, входное значение преобразуется в метку времени Unix, которая по определению находится в UTC, поэтому выполняется преобразование из входного часового пояса в UTC.

  • С версии 2.0.4 также можно указать минимальное или максимальное значение метки времени.

В случае, если входное значение необязательно, вы также можете добавить фильтр значения по умолчанию в дополнение к валидатору date, чтобы убедиться, что пустой ввод хранится как null. В противном случае вы можете получить даты, такие как 0000-00-00 в вашей базе данных или 1970-01-01 в поле ввода выбора даты.

[
    [['from_date', 'to_date'], 'default', 'value' => null],
    [['from_date', 'to_date'], 'date'],
],

default

[
    // set "age" to be null if it is empty
    ['age', 'default', 'value' => null],

    // set "country" to be "USA" if it is empty
    ['country', 'default', 'value' => 'USA'],

    // assign "from" and "to" with a date 3 days and 6 days from today, if they are empty
    [['from', 'to'], 'default', 'value' => function ($model, $attribute) {
        return date('Y-m-d', strtotime($attribute === 'to' ? '+3 days' : '+6 days'));
    }],
]

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

  • value: значение по умолчанию или PHP-вызов, возвращающий значение по умолчанию, которое будет присвоено атрибутам, которые проверяются, если они пустые. Подпись PHP-вызова должна быть следующей:
function foo($model, $attribute) {
    // ... compute $value ...
    return $value;
}

Информация: Как определить, является ли значение пустым или нет, — это отдельная тема, рассматриваемая в разделе Пустые значения. Значение по умолчанию из схемы базы данных может загружаться с помощью метода loadDefaultValues() модели.

double

[
    // checks if "salary" is a double number
    ['salary', 'double'],
]

Этот валидатор проверяет, является ли входное значение двойным числом. Он эквивалентен валидатору number.

  • max: верхняя граница (включая) значения. Если не задано, валидатор не проверяет верхнюю границу.
  • min: нижняя граница (включая) значения. Если не задано, валидатор не проверяет нижнюю границу.

each

Информация: Этот валидатор доступен с версии 2.0.4.

[
    // checks if every category ID is an integer
    ['categoryIDs', 'each', 'rule' => ['integer']],
]

Этот валидатор работает только с атрибутом массива. Он проверяет, может ли каждый элемент массива быть успешно валидирован указанным правилом валидации. В приведенном выше примере атрибут categoryIDs должен принимать значение массива, и каждый элемент массива будет валидироваться правилом валидации integer.

  • rule: массив, определяющий правило валидации. Первый элемент в массиве определяет имя класса или псевдоним валидатора. Остальные пары имя-значение в массиве используются для настройки объекта валидатора.
  • allowMessageFromRule: использовать ли сообщение об ошибке, возвращаемое встроенным правилом валидации. По умолчанию true. Если false, будет использоваться message в качестве сообщения об ошибке.

Примечание: Если значение атрибута не является массивом, оно считается невалидным, и в качестве сообщения об ошибке будет возвращено message.

email

[
    // checks if "email" is a valid email address
    ['email', 'email'],
]

Этот валидатор проверяет, является ли входное значение корректным адресом электронной почты.

  • allowName: разрешать ли имя в адресе электронной почты (например, John Smith <john.smith@example.com>). По умолчанию false.
  • checkDNS, проверять ли существование домена электронной почты и наличие записи A или MX. Имейте в виду, что эта проверка может завершиться неудачно из-за временных проблем с DNS, даже если адрес электронной почты фактически корректен. По умолчанию false.
  • enableIDN, учитывать ли валидация IDN (международные доменные имена). По умолчанию false. Обратите внимание, что для использования валидации IDN необходимо установить и включить расширение PHP intl, иначе будет выброшено исключение.

exist

[
    // a1 needs to exist in the column represented by the "a1" attribute
    ['a1', 'exist'],

    // a1 needs to exist, but its value will use a2 to check for the existence
    ['a1', 'exist', 'targetAttribute' => 'a2'],

    // a1 and a2 need to exist together, and they both will receive error message
    [['a1', 'a2'], 'exist', 'targetAttribute' => ['a1', 'a2']],

    // a1 and a2 need to exist together, only a1 will receive error message
    ['a1', 'exist', 'targetAttribute' => ['a1', 'a2']],

    // a1 needs to exist by checking the existence of both a2 and a3 (using a1 value)
    ['a1', 'exist', 'targetAttribute' => ['a2', 'a1' => 'a3']],

    // a1 needs to exist. If a1 is an array, then every element of it must exist.
    ['a1', 'exist', 'allowArray' => true],
]

Этот валидатор проверяет, можно ли найти входное значение в столбце таблицы, представленном атрибутом Active Record. Вы можете использовать targetAttribute для указания атрибута Active Record и targetClass соответствующего класса Active Record. Если вы их не укажете, будут использованы значения атрибута и класса модели, которые в данный момент валидируются.

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

  • targetClass: имя класса Active Record, который должен быть использован для поиска входного значения, которое валидируется. Если не указано, будет использован класс модели, которая в данный момент валидируется.
  • targetAttribute: имя атрибута в targetClass , которое должно быть использовано для проверки существования входного значения. Если не указано, будет использовано имя атрибута, который в данный момент валидируется. Вы можете использовать массив для проверки существования нескольких столбцов одновременно. Значения массива являются атрибутами, которые будут использованы для проверки существования, а ключи массива — атрибутами, значения которых будут проверены. Если ключ и значение совпадают, вы можете просто указать значение.
  • filter: дополнительный фильтр, который должен быть применён к запросу базы данных, используемому для проверки существования входного значения. Это может быть строка или массив, представляющий дополнительное условие запроса (см. yii\db\Query::where() для формата условия запроса), или анонимная функция с сигнатурой function ($query), где $query — объект Query, который вы можете изменить в функции.
  • allowArray: разрешить ли входному значению быть массивом. По умолчанию false. Если этот параметр true и входные данные являются массивом, то каждый элемент массива должен существовать в целевом столбце. Обратите внимание, что этот параметр нельзя установить true если вы проверяете по нескольким столбцам, установив targetAttribute как массив.

file

[
    // checks if "primaryImage" is an uploaded image file in PNG, JPG or GIF format.
    // the file size must be less than 1MB
    ['primaryImage', 'file', 'extensions' => ['png', 'jpg', 'gif'], 'maxSize' => 1024*1024],
]

Этот валидатор проверяет, является ли входные данные корректным загруженным файлом.

  • extensions: список расширений имен файлов, которые разрешено загружать. Это может быть массив или строка, состоящая из имён расширений файлов, разделённых пробелом или запятой (например, "gif, jpg"). Имена расширений не чувствительны к регистру. По умолчанию null, что означает, что разрешены все расширения имён файлов.
  • mimeTypes: список MIME-типов файлов, которые разрешено загружать. Это может быть массив или строка, состоящая из MIME-типов файлов, разделённых пробелом или запятой (например, "image/jpeg, image/png"). Может быть использована маска подстановки со специальным символом *, чтобы соответствовать группам MIME-типов. Например, image/* пройдет все MIME-типы, начинающиеся с image/ (например, image/jpeg, image/png). Имена MIME-типов не чувствительны к регистру. По умолчанию null, что означает, что разрешены все MIME-типы. Для получения более подробной информации, обратитесь к часто используемым типам медиа.
  • minSize: минимальное количество байтов, требуемое для загруженного файла. По умолчанию null, что означает отсутствие нижнего предела.
  • maxSize: максимальное количество байтов, разрешенных для загруженного файла. По умолчанию null, что означает отсутствие верхнего предела.
  • maxFiles: максимальное количество файлов, которые может содержать данный атрибут. По умолчанию 1, что означает, что вход должен быть одним загруженным файлом. Если значение больше 1, то вход должен быть массивом, состоящим не более чем из maxFiles загруженных файлов.
  • checkExtensionByMimeType: проверять ли расширение файла по MIME-типу файла. Если расширение, полученное по MIME-типу, отличается от расширения загруженного файла, файл будет считаться невалидным. По умолчанию true, что означает, что такая проверка выполняется.

FileValidator используется вместе с yii\web\UploadedFile. Полное описание загрузки файлов и проверки загруженных файлов см. в разделе Загрузка файлов.

filter

[
    // trim "username" and "email" inputs
    [['username', 'email'], 'filter', 'filter' => 'trim', 'skipOnArray' => true],

    // normalize "phone" input
    ['phone', 'filter', 'filter' => function ($value) {
        // normalize phone input here
        return $value;
    }],
]

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

  • filter: PHP-обратный вызов, который определяет фильтр. Это может быть имя глобальной функции, анонимная функция и т.д. Подпись функции должна быть function ($value) { return $newValue; }. Этот параметр должен быть задан.
  • skipOnArray: пропускать ли фильтр, если входное значение является массивом. По умолчанию false. Обратите внимание, что если фильтр не может обрабатывать входные данные в виде массива, вам следует установить этот параметр в true. В противном случае может произойти ошибка PHP.

Подсказка: Если вы хотите обрезать входные значения, вы можете напрямую использовать валидатор trim.

Подсказка: Существует множество функций PHP, у которых есть подпись, ожидаемая для обратного вызова filter. Например, чтобы применить приведение типов (используя, например, intval, boolval, ...) для обеспечения определенного типа атрибута, вы можете просто указать имена функций фильтра без необходимости заключать их в замыкание:

['property', 'filter', 'filter' => 'boolval'],
['property', 'filter', 'filter' => 'intval'],

image

[
    // checks if "primaryImage" is a valid image with proper size
    ['primaryImage', 'image', 'extensions' => 'png, jpg',
        'minWidth' => 100, 'maxWidth' => 1000,
        'minHeight' => 100, 'maxHeight' => 1000,
    ],
]

Этот валидатор проверяет, представляет ли входное значение корректный файл изображения. Он расширяет валидатор file и, таким образом, наследует все его свойства. Кроме того, он поддерживает следующие дополнительные свойства, специфичные для валидации изображений:

  • minWidth: минимальная ширина изображения. По умолчанию null, что означает отсутствие нижнего предела.
  • maxWidth: максимальная ширина изображения. По умолчанию null, что означает отсутствие верхнего предела.
  • minHeight: минимальная высота изображения. По умолчанию null, что означает отсутствие нижнего предела.
  • maxHeight: максимальная высота изображения. По умолчанию null, что означает отсутствие верхнего предела.

ip

[
    // checks if "ip_address" is a valid IPv4 or IPv6 address
    ['ip_address', 'ip'],

    // checks if "ip_address" is a valid IPv6 address or subnet,
    // value will be expanded to full IPv6 notation.
    ['ip_address', 'ip', 'ipv4' => false, 'subnet' => null, 'expandIPv6' => true],

    // checks if "ip_address" is a valid IPv4 or IPv6 address,
    // allows negation character `!` at the beginning
    ['ip_address', 'ip', 'negation' => true],
]

Валидатор проверяет, является ли значение атрибута корректным адресом IPv4/IPv6 или подсетью. Он также может изменить значение атрибута, если включена нормализация или расширение IPv6.

Валидатор имеет следующие параметры конфигурации:

  • ipv4: можно ли валидируемое значение представить в виде адреса IPv4. По умолчанию true.
  • ipv6: можно ли валидируемое значение представить в виде адреса IPv6. По умолчанию true.
  • subnet: можно ли адрес представить в виде IP с префиксом CIDR, например 192.168.10.0/24

    • true - подсеть обязательна, адреса без CIDR будут отклонены
    • false - адрес не может содержать CIDR
    • null - CIDR необязателен

    По умолчанию false.

  • normalize: добавить ли префикс CIDR с минимальной длиной (32 для IPv4 и 128 для IPv6) к адресу без него. Работает только когда subnet не равно false. Например:

    • 10.0.1.5 будет нормализован до 10.0.1.5/32
    • 2008:db0::1 будет нормализован до 2008:db0::1/128

    По умолчанию false.

  • negation: может ли адрес валидации содержать символ отрицания ! в начале. По умолчанию false.
  • expandIPv6: расширять ли адрес IPv6 до полного формата записи. Например, 2008:db0::1 будет расширен до 2008:0db0:0000:0000:0000:0000:0000:0001 По умолчанию false.
  • ranges: массив диапазонов IPv4 или IPv6, разрешенных или запрещенных.

    Если массив пуст или опция не задана, все IP-адреса разрешены. В противном случае правила проверяются последовательно до первого совпадения. IP-адрес запрещен, если он не соответствует ни одному из правил.

    Например: `php [

       'client_ip', 'ip', 'ranges' => [
           '192.168.10.128'
           '!192.168.10.0/24',
           'any' // allows any other IP addresses
       ]
    

    ] ` В этом примере разрешен доступ ко всем адресам IPv4 и IPv6, за исключением подсети 192.168.10.0/24. IP-адрес IPv4 192.168.10.128 также разрешен, поскольку он указан до ограничения.

  • networks: массив псевдонимов сетей, которые могут быть использованы в ranges. Формат массива:

    • ключ - имя псевдонима
    • значение - массив строк. Строка может быть диапазоном, IP-адресом или другим псевдонимом. Строка может быть отменена с помощью ! (независимо от опции negation).

    По умолчанию определены следующие псевдонимы:

    • *: any
    • any: 0.0.0.0/0, ::/0
    • private: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fd00::/8
    • multicast: 224.0.0.0/4, ff00::/8
    • linklocal: 169.254.0.0/16, fe80::/10
    • localhost: 127.0.0.0/8', ::1
    • documentation: 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24, 2001:db8::/32
    • system: multicast, linklocal, localhost, documentation

Информация: Данный валидатор доступен начиная с версии 2.0.7.

в

[
    // checks if "level" is 1, 2 or 3
    ['level', 'in', 'range' => [1, 2, 3]],
]

Этот валидатор проверяет, содержится ли входное значение в заданном списке значений.

  • range: список заданных значений, в котором должно быть найдено входное значение.
  • strict: следует ли выполнять строгое сравнение входного значения с заданными значениями (должны совпадать и тип, и значение). По умолчанию false.
  • not: инвертировать ли результат валидации. По умолчанию false. Если эта свойство установлено в true, валидатор проверяет, не входит ли входное значение в заданный список значений.
  • allowArray: разрешить ли входное значение в виде массива. Если это true, и входное значение является массивом, каждый элемент массива должен быть найден в заданном списке значений, иначе валидация завершится неудачей.

целое

[
    // checks if "age" is an integer
    ['age', 'integer'],
]

Этот валидатор проверяет, является ли входное значение целым числом.

  • max: верхняя граница (включительно) значения. Если не задано, валидатор не проверяет верхнюю границу.
  • min: нижняя граница (включительно) значения. Если не задано, валидатор не проверяет нижнюю границу.

совпадение

[
    // checks if "username" starts with a letter and contains only word characters
    ['username', 'match', 'pattern' => '/^[a-z]\w*$/i']
]

Этот валидатор проверяет, соответствует ли входное значение указанному регулярному выражению.

  • pattern: регулярное выражение, которому должно соответствовать входное значение. Это свойство должно быть задано, иначе будет выброшено исключение.
  • not: инвертировать ли результат валидации. По умолчанию false, то есть валидация проходит только если входное значение соответствует шаблону. Если это установлено в true, валидация считается успешной только если входное значение НЕ соответствует шаблону.

число

[
    // checks if "salary" is a number
    ['salary', 'number'],
]

Этот валидатор проверяет, является ли входное значение числом. Он эквивалентен валидатору double.

  • max: верхняя граница (включительно) значения. Если не задано, валидатор не проверяет верхнюю границу.
  • min: нижняя граница (включительно) значения. Если не задано, валидатор не проверяет нижнюю границу.

обязательное

[
    // checks if both "username" and "password" are not empty
    [['username', 'password'], 'required'],
]

Этот валидатор проверяет, предоставлено ли входное значение и не пустое.

  • requiredValue: желаемое значение, которым должно быть входное. Если не задано, входное значение не должно быть пустым.
  • strict: проверять ли типы данных при валидации значения. По умолчанию false. Если requiredValue не установлено, если это свойство true, валидатор проверит, что входное значение не является строго null; Если это свойство false, валидатор будет использовать слабое правило для определения пустого значения. Если requiredValue установлено, сравнение входного значения и requiredValue также проверит типы данных, если это свойство true.

Информация: Как определить, является ли значение пустым, — отдельная тема, описанная в разделе Пустые значения.

безопасный

[
    // marks "description" to be a safe attribute
    ['description', 'safe'],
]

Этот валидатор не выполняет валидацию данных. Вместо этого он используется для маркировки атрибута как безопасный атрибут.

строка

[
    // checks if "username" is a string whose length is between 4 and 24
    ['username', 'string', 'length' => [4, 24]],
]

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

  • length: указывает предел длины входной строки, которую необходимо проверить. Это может быть указано в одной из следующих форм:
    • целое число: точная длина, которой должна обладать строка;
    • массив из одного элемента: минимальная длина входной строки (например, [8]). Это переопределит min.
    • массив из двух элементов: минимальная и максимальная длины входной строки (например, [8, 128]). Это переопределит как min, так и max.
  • min: минимальная длина входной строки. Если не задано, минимальный предел длины отсутствует.
  • max: максимальная длина входной строки. Если не задано, максимальный предел длины отсутствует.
  • encoding: кодировка входной строки, которую нужно проверить. Если не задано, используется значение кодировки приложения charset, по умолчанию UTF-8.

обрезать

[
    // trims the white spaces surrounding "username" and "email"
    [['username', 'email'], 'trim'],
]

Этот валидатор не выполняет проверку данных. Вместо этого он обрезает пробелы в начале и конце входного значения. Обратите внимание, что если входное значение является массивом, оно будет проигнорировано этим валидатором.

уникальный

[
    // a1 needs to be unique in the column represented by the "a1" attribute
    ['a1', 'unique'],

    // a1 needs to be unique, but column a2 will be used to check the uniqueness of the a1 value
    ['a1', 'unique', 'targetAttribute' => 'a2'],

    // a1 and a2 need to be unique together, and they both will receive error message
    [['a1', 'a2'], 'unique', 'targetAttribute' => ['a1', 'a2']],

    // a1 and a2 need to be unique together, only a1 will receive error message
    ['a1', 'unique', 'targetAttribute' => ['a1', 'a2']],

    // a1 needs to be unique by checking the uniqueness of both a2 and a3 (using a1 value)
    ['a1', 'unique', 'targetAttribute' => ['a2', 'a1' => 'a3']],
]

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

  • targetClass: имя класса Active Record, который следует использовать для поиска входного значения, которое нужно проверить. Если не указано, используется класс модели, которая в данный момент проходит проверку.
  • targetAttribute: имя атрибута в targetClass, которое следует использовать для проверки уникальности входного значения. Если не указано, используется имя атрибута, который в данный момент проверяется. Можно использовать массив для одновременной проверки уникальности по нескольким столбцам. Значения массива — это атрибуты, используемые для проверки уникальности, а ключи массива — это атрибуты, значения которых проверяются. Если ключ и значение совпадают, можно просто указать значение.
  • filter: дополнительный фильтр, который следует применить к запросу БД для проверки уникальности входного значения. Может быть строкой или массивом, представляющим дополнительное условие запроса (см. yii\db\Query::where() для формата условия запроса), или анонимной функцией с сигнатурой function ($query), где $query — объект Query, который можно изменить в функции.

URL

[
    // checks if "website" is a valid URL. Prepend "http://" to the "website" attribute
    // if it does not have a URI scheme
    ['website', 'url', 'defaultScheme' => 'http'],
]

Этот валидатор проверяет, является ли входное значение допустимым URL.

  • validSchemes: массив, определяющий схемы URI, которые должны считаться допустимыми. По умолчанию ['http', 'https'], то есть как http, так и https URL считаются допустимыми.
  • defaultScheme: схема URI по умолчанию, которая должна быть добавлена в начало входного значения, если в нем отсутствует часть схемы. По умолчанию null, то есть не изменять входное значение.
  • enableIDN: должен ли валидатор учитывать IDN (международные доменные имена). По умолчанию false. Обратите внимание, что для использования валидации IDN необходимо установить и включить расширение intl PHP, иначе будет выброшено исключение.

Примечание: Валидатор проверяет правильность схемы и хоста URL. Он НЕ проверяет оставшиеся части URL и НЕ предназначен для защиты от XSS или других атак. См. статью Рекомендации по безопасности, чтобы узнать больше о предотвращении угроз при разработке приложений.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/guide-tutorial-core-validators.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API