butteff
@butteff
Раз в тысячу лет заправляю свитер в носки

Почему не работает своя валидация в yii2?

господа, есть проблемка: делаю свою валидацию, в rules добавляю:
['role', 'required'],
['role', 'validateRole'],


Далее, метод:
// Role validation:
    public function validateRole($attribute, $params) {
    	if (!in_array($this->$attribute, ['admin','distributor','reseller','customer'])) {
            $this->addError($attribute, 'Wrong Role');
        }
    }


Срабатывает при этом только required на фронтенде.
пробовал делать даже так:
// Role validation:
    public function validateRole($attribute, $params) {
            $this->addError($attribute, 'Wrong Role');
    }


но при этом на фронтенде пусто, никаких ошибок.

Даже если внутри ValidateRole написать просто die(); - ничего не рушится, но если убрать метод validateRole, но оставить его в rules, то тогда YII дает ошибку

Exception 'ReflectionException' with message 'Class validateRole does not exist'


Но почему class?
Что я делаю не так?
  • Вопрос задан
  • 1653 просмотра
Решения вопроса 1
mhthnz
@mhthnz
PHP, YII2, Golang, Linux
зачем изобретать велосипед?
['role', 'required'],
['role', 'in', 'range' => ['admin', 'distributor', 'reseller', 'customer'], 'message' => 'Wrong Rule'],
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
bitver
@bitver
Нажмите сабмит и будет вам ошибка. А на клиенте надо делать clientValidation
Ответ написан
Akdmeh
@Akdmeh
PHP, Yii2, Music
Сергей: да, ниже вам правильно ответили. На фронтэнде это работать и не должно было, извините, я просто не заметил. Для фронтэнда нужно писать свои правила, посмотрите
www.yiiframework.com/doc-2.0/yii-validators-valida...
Ответ написан
Ваш ответ на вопрос

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

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