yii2 Валидация регулярным выражением, rules(), Проверка уникальности, имя атрибута и значение в сообщения. Сложная проверка
Primary tabs
Например проверим, что ИНН состоит из 12 цифр (принимаем как строку)
public function rules()
{
$systemRules = [
[['INN'], 'match', 'pattern' => '/^[0-9]{12}$/'], // проверка ИНН
[['OGRN'], 'unique', 'targetAttribute' => ['OGRN'],
'message' => '{attribute} "{value}" уже занят. Задайте уникальный {attribute}'],
];
return $systemRules;
}
Вообще правила могут быть комбинированными и очень сложными (уникально, обязательность заполнения, уникальность суммы нескольких полей и т.д.):
$systemRules = [
[[ 'full_name', 'address'], 'required'],
[['latitude', 'longitude'], 'number'],
[['postcode'], 'string', 'length' => 6],
[['federal_district_id', 'federal_subject_id', 'municipality_id',
'branch', 'INN', 'OGRN'], 'integer'],
[['full_name'], 'string', 'max' => 300],
[['short_name'], 'string', 'max' => 128],
[['OKPO'], 'string', 'length' => 8, 'max' => 8],
[['OKTMO'], 'string', 'max' => 11],
[['INN'], 'string', 'length' => 12 ],
[['OGRN'], 'string', 'length' => 13 ],
[['INN'], 'match', 'pattern' => '/^[0-9]{12}$/', 'message' => 'это не то 22!' ],
// [['INN'], 'string', 'max' => 8, 'message' => 'это не то!' ],
[['OGRN'], 'match', 'pattern' => '/^[0-9]{13}$/'],
[['KPP'], 'string', 'length' => 9],
[['address'], 'string', 'max' => 255],
[['helipads_ids', 'enroute_medical_services_ids'], 'safe'],
['branch', 'default', 'value' => null],
[['related_to_disaster_medicine_service'], 'boolean'],
[['is_private_organization'], 'boolean'],
[['OKPO', 'branch'], 'unique', 'targetAttribute' => ['OKPO', 'branch'],
'message' => '{attribute} "{value}" уже занят. ]',
[['OGRN'], 'unique', 'targetAttribute' => ['OGRN'],
'message' => '{attribute} "{value}" уже занят.'
. ' Задайте уникальный {attribute}'],
[['INN', 'OKPO'], 'unique', 'targetAttribute' => ['INN', 'OKPO'],
'message' => 'Значения ИНН + ОКПО должны быть уникальными.'
. 'Указанные вами значения уже заняты в другими организациях.'],
[['INN', 'KPP'], 'unique', 'targetAttribute' => ['INN', 'KPP'],
'message' => 'Значения ИНН + КПП должны быть уникальными.'
. ' Указанные вами значения уже заняты в другими организациях.'],
];
- Log in to post comments
- 6510 reads