@Tiasar
Web Developer

Почему не срабатывает правило валидации integer?

Есть модель Siganl у которой есть атрибуты organization и color
У модели есть правила валидации
[['organization', 'color'], 'required'],
[['organization', 'color'], 'integer'],
[['organization', 'color'], 'filter', 'filter' => 'intval'],

В представлении эти атрибуты формируются виджетом dropDownList

В контроллере после
$model->load(Yii::$app->request->post())
если вывести
var_dump($model->getDirtyAttributes());
то они будут char а не int, хотя значения и не менялись они помечены как "грязные" из за того что старые данные были int а новые char

Во view если сделать var_dump($model->color); будет INT

Куда копать?

UPD: если в правило добить атрибут textinput и ввести не число то валидатор выдаст ошибку, т.е. правило работает но получается не приводит к типу int при разобре POST данных? Получается их надо "вручную" приводить? Или есть "best practics" для моего случая?
  • Вопрос задан
  • 38 просмотров
Решения вопроса 1
kimono
@kimono
Web developer
load только загружает данные в модель, а для валидации надо запустить метод validate
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Tiasar Автор вопроса
Web Developer
Большое спасибо! Я немного тупой :D Все прекрасно заработало при
$model->load(Yii::$app->request->post()) && $model->validate()
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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