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
- 5560 reads