Yii2 кастомная валидация в Activeform — как вывести сообщение об ошибке?

Есть Activeform, в ней поле offer_maximum, для которого необходимо сделать проверку...

public function rules()
    {
        return [
			...
            [ 'offer_minimum', 'number', 'min' => 100],
            ['offer_maximum', 'getPossibleMaximum'],
        ];
    }

        public function getPossibleMaximum($attribute){
            $this->addError($attribute, 'Недостаточно средств на балансе!');
        }


Я ожидаю, что при заполнении поля offer_maximum будет выдано сообщение об ошибке так, как это происходит для поля offer_minimum но данный rule не добавляется в скрипт Ajax-валидации.
  • Вопрос задан
  • 1053 просмотра
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
1. не называйте валидатор, как геттер,
"possibleMaximum" - хороший вариант
"checkPossibleMaximum" - тоже
"getPossibleMaximum" - не правильно
2. То что вы назвали переменную $attribute не значит, что в ней атрибут, там модель, так как первым параметром передается именно модель.
Поэтому
public function getPossibleMaximum($attribute){
            $this->addError($attribute, 'Недостаточно средств на балансе!');
        }

меняем на
public function possibleMaximum($modelKakNeNazovi,$attributeHotTiTresni){
            $this->addError($attributeHotTiTresni, 'Недостаточно средств на балансе!');
        }


ПС: Описанный Вами пример должен работать только на сервере, для клиентский валидации все немного сложнее: https://www.yiiframework.com/doc/guide/2.0/ru/inpu...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
proudmore
@proudmore
Если вы используете какой-то отличный от дефолтного сценарий, вы могли забыть добавить атрибут в список валидации
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы