Обработка табличного ввода

Иногда нам может потребоваться обрабатывать данные, вводимые пользователем, в пакетном режиме. Иначе говоря, случаются ситуации, когда пользователь вводит данные для множества экземпляров модели и отправляет их на сервер все разом. Будем называть это табличным вводом (tabular input), поскольку поля ввода, как правило, организованы в виде таблицы.

Для работы с табличным вводом нам, в первую очередь, понадобится создать или заполнить массив, состоящий из экземпляров модели данных, в зависимости от того, добавляем мы данные или обновляем. Затем мы извлекаем данные из переменной $_POST и присваиваем их каждой модели. В отличие от ввода данных для одной модели, здесь для присваивания значений атрибутам мы будем использовать $_POST['ModelClass'][$i] вместо $_POST['ModelClass'].



Когда действие готово, необходимо создать представление batchUpdate таким образом, чтобы отобразить все необходимые поля ввода в HTML таблице:



Обратите внимание, что выше мы используем "[$i]name" вместо "name" в качестве второго параметра при вызове метода CHtml::activeTextField.

В случае если возникают ошибки валидации, соответствующие поля ввода будут подсвечены автоматически, как и в случае работы с одной моделью, рассмотренной ранее.