Odczytywanie tablicowych danych wejściowych ======================== Czasami mamy potrzebę zbierania danych wejściowych użytkownika w trybie wsadowym. Inaczej mówiąc, użytkownik może wprowadzić informacje dla wielu instancji modelu oraz przesłać je wszystkie naraz. Nazywamy to *tablicowymi danymi wejściowymi* (ang. tabular input, ponieważ pola wejściowe są często prezentowane w tabeli HTML. Aby pracować z tablicowymi danymi wejściowymi, musimy najpierw stworzyć lub też wypełnić tablice modeli instancji, w zależności od tego czy wstawiamy dane czy też aktualizujemy je. Otrzymujemy wtedy dane wejściowe użytkownika ze zmiennej `$_POST` oraz przypisujemy je do każdego modelu. Drobną różnicą pomiędzy w stosunku do danych wejściowych jednego modelu jest to, że otrzymujemy dana przy użyciu `$_POST['ModelClass'][$i]` zamiast `$_POST['ModelClass']`. ~~~ [php] public function actionBatchUpdate() { // zwracanie pozycji, które będą aktualizowane w trybie wsadowym // przy założeniu, że każda pozycja jest klasą modelu 'Item' $items=$this->getItemsToUpdate(); if(isset($_POST['Item'])) { $valid=true; foreach($items as $i=>$item) { if(isset($_POST['Item'][$i])) $item->attributes=$_POST['Item'][$i]; $valid=$item->validate() && $valid; } if($valid) // all items are valid // ...rób coś tutaj } // wyświetl widok do zbierania tabelarycznych danych wejściowych $this->render('batchUpdate',array('items'=>$items)); } ~~~ Mając gotową akcję, musimy popracować nad widokiem `batchUpdate` aby wyświetlić pola wejściowe za pomocą tabeli HTML. ~~~ [php]
| Nazwa | Cena | Ilość | Opis |
|---|---|---|---|