Валидация через через «each» в yii2?

не работает валидация через each,
поле
public $child_age = [];
rules
public function rules()
    {
        return [
            ['child_age', 'each', 'rule' => ['integer']],
            ['child_age', 'each', 'rule' => ['compare', 'compareValue' => 2, 'operator' => '>=']]
        ];
    }

и во view
<div class="number-control">
                                    <?= $form->field($model, 'child_age[]', [
                                        'template' => '{input}{error}'.Html::button('', ['class' => 'minus']).Html::button('', ['class' => 'plus'])
                                    ])->input('text', ['value' => 6])->label(false) ?>
                                </div>


что здесь не так? не понимаю
  • Вопрос задан
  • 4531 просмотр
Пригласить эксперта
Ответы на вопрос 3
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
выглядит все верно, возможно не в нем проблема?
Ответ написан
@davidnum95
Попробуй добавить параметр skipOnEmpty в валидатор. Вот так:
public function rules()
    {
        return [
            ['child_age', 'each', 'rule' => ['integer'], 'skipOnEmpty' => false],
            ['child_age', 'each', 'rule' => ['compare', 'compareValue' => 2, 'operator' => '>='], 'skipOnEmpty' => false]
        ];
    }
Ответ написан
Комментировать
qonand
@qonand
Software Engineer
Маловероятно что валидация не отрабатывает если все правильно сделано. Валидация может не отрабатывать только в следующих случаях:
1. Вы не загружаете данные атрибута из запроса в модель (не мешало бы показать контроллер где это происходит)
2. У Вас срабатывает клиентская валидация или аякс-валидация на других полях до отправки формы на сервер, соответственно each-валидация не срабатывает.
Не мешало что бы Вы показали полностью код формы.

А вообще судя по коду Вы изобретаете велосипед. Для решения Вашей задачи проще использовать готовое решение, например это
Ответ написан
Ваш ответ на вопрос

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

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