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

Валидация через через «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>


что здесь не так? не понимаю
  • Вопрос задан
  • 4660 просмотров
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 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-валидация не срабатывает.
Не мешало что бы Вы показали полностью код формы.

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

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

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