Yii2: rules. Правила валидации. Примеры
О валидации написано много, но примеров было мало. Исправляюсь.
В этом посте будут только примеры. Если нужна теория и техническое описание, то тебе сюда:
email
В этом посте будут только примеры. Если нужна теория и техническое описание, то тебе сюда:
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]],
];
}
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'],
];
}
Комментарии
Отправить комментарий