Yii2. Как валидировать массив с данными?


В процессе разработки часто в качестве атрибута может выступать массив с данными, которые также нужно валидировать. В Yii2 есть необходимый валидатор, о котором мы часто забываем. В этой статье — пример работы с валидатором each для валидации элементов массива.

Собственно все достаточно просто. И отлично описано в документации.

Другими словами — при помощи EachValidator мы можем применить любой валидатор (включая самописные) к каждому из элементов массива.

Ниже пример:

class SomeModel extends yii\base\Model{
    // Каждый элемент должен быть числом. Валидация будет успешна.
    public $arrayOfInt = [1, 2, 3, 4] ;

    // Каждый элемент должен быть в списке ['yes', 'no']. Валидация будет успешна.
    public $arrayOfYesNo = ['yes', 'no'] ;

    // Каждый элемент должен быть в списке ['yes', 'no']. Валидация вернет ошибку. Элемент 'some-error-value' не попадает в список разрешенных.
    public $array2OfYesNo = ['yes', 'no', 'some-error-value'] ;


    public function rules(){
        return [
            [['arrayOfInt'], 'each', 'rule' => ['integer']],
            [['arrayOfYesNo'], 'each', 'rule' => ['in', 'range' => ['yes', 'no']]],
            [['array2OfYesNo'], 'each', 'rule' => ['in', 'range' => ['yes', 'no']]]
        ];
    }

}

Вот и весь пример. Надеюсь мне удалось сделать его максимально понятным и продемонстировать работу валидатора Each.

Если остались вопросы — буду рад Вашим комментариям. Удачи!

, ,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *