Yii2: rules. Правила валидации. Примеры

О валидации написано много, но примеров было мало. Исправляюсь.

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

boolean

public function rules()
{
    return [
        [['active'], 'boolean'],
    ];
}

captcha

public function rules()
{
    return [
        [['verifyCode'], 'captcha', 'captchaAction' => 'user/captcha'],
    ];
}

compare

public function rules()
{
    return [
        [['min_count'], 'compare', 'compareAttribute' => 'max_count', 'operator' => '<='],
        [['max_count'], 'compare', 'compareValue' => 100, 'operator' => '>'],
    ];
}

date / datetime/ time

public function rules()
{
    return [
        [['date'], 'date', 'format' => 'php:d.m.Y H:i'],
        [['time'], 'time'],
    ];
}

default

public function rules()
{
    return [
        [['active'], 'default', 'value' => true],
    ];
}

double / integer / number

public function rules()
{
    return [
        [['country_id', 'region_id'], 'integer'],
        [['living_wage'], 'double', 'numberPattern' => '/^\s*[-+]?[0-9]*[.,]?[0-9]*\s*$/'],
        [['population'], 'integer', 'min' => 1],
    ];
}

each

public function rules()
{
    return [
        [['data'], 'each', 'rule' => ['string', 'max' => 10]],
    ];
}

email

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

exist

public function rules()
{
    return [
        // user_id должен существовать в столбце, который представляется атрибутом "user_id"
        ['user_id', 'exist'],

        // user_id требует проверки существования id в модели User (используя значение user_id)
        ['user_id', 'exist', 'targetClass' => User::className(), 'targetAttribute' => ['user_id' => 'id']]
    ];
}

file

public function rules()
{
    return [
        [['img'], 'file', 'extensions' => ['png', 'jpg', 'gif'], 'maxSize' => 1024 * 1024 * 0.5],
    ];
}

filter

public function rules()
{
    return [
        // обрезаем пробелы
        [['email', 'password'], 'filter', 'filter' => 'trim', 'skipOnArray' => true],

        // форматируем номер телефона
        [['phone'], 'filter', 'filter' => function ($value) {
            $result = preg_replace("/(\+7)(\d{3})(\d{3})(\d{2})(\d{2})/", "$1 ($2) $3-$4-$5", $value);
            return $result;
        }],

    ];
}

image

public function rules()
{
    return [
        [['preview'], 'image', 'extensions' => ['png', 'jpg', 'gif'], 'maxWidth' => 500, 'maxHeight' => 500,],
    ];
}

in

public function rules()
{
    return [
        ['type', 'in', 'range' => [1, 2, 3]],
    ];
}

match

public function rules()
{
    return [
        ['password', 'match', 'pattern' => '/^\S*(?=\S{8,})(?=\S*[a-z])(?=\S*[A-Z])(?=\S*[\d])\S*$/i']
    ];
}

required

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

safe

public function rules()
{
    return [
        ['text', 'safe'],
    ];
}

string

public function rules()
{
    return [
        ['login', 'string', 'min' => 3, 'max' => 10],
        ['name', 'string', [3, 10]],
    ];
}

trim

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

unique

public function rules()
{
    return [
        ['model', 'unique'],
    ];
}

url

public function rules()
{
    return [
        ['link', 'url', 'defaultScheme' => 'http'],
    ];
}

Комментарии

Популярные сообщения