Задать вопрос
@elise

Как сделать валидацию по условию?

Добрый вечер.
на yii2 пытаюсь сделать валидацию по условию - если введен ИНН 10 символов, то КПП 9-символьный, если введен ИНН 12 символов, то КПП не нужен.

вышло что-то вроде этого:
['inn', function ($attribute, $params, $validator) {
       if (preg_match('/^[0-9]{12}$/', $this->$attribute) || preg_match('/^[0-9]{10}$/', $this->$attribute)) {
            $this->addError($attribute, 'Инн должен быть 10 или 12 символов.');
       }
}],
[[kpp], 'match', 'pattern' => '/^[0-9]{9}*$/i', 'when' => function ($model) {
        return preg_match('/^[0-9]{10}$/', $this->inn);}
]


как-то сюда еще надо добавить условие про то, что кпп не нужен при 12-значном инн, да и вообще дойти хоть до какой-то работоспособности. пока не очень выходит
подскажите пожалуйста, может я что-то упустила)
  • Вопрос задан
  • 398 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
['kpp', 'string', 'min'=>9, 'max'=>9, 'when'=>function($model){ 
  $l = strlen ($model->inn);
  return ($l == 12);
}],
['kpp', 'required', 'when'=>function($model){ 
    $l = strlen ($model->inn);
    return ($l != 12);
],
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
FudoTsu
@FudoTsu
Разработчик - java, php,js,jquery,nodejs,c#,css
$attribute = intval($attribute);
if(empty($attribute) || preg_match('/^\d{12}$/', $attribute))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы