Порядковый номер в CGridView
Иногда возникает необходимость создать столбец с порядковым номером, чтобы было проще ориентироваться в дебрях таблицы.
Для этого в виджете, помимо переменной $data, где хранится модель для текущей строки, доступна ещё и переменная $row, в которой хранится порядковый номер записи, начинающийся с нуля.
Также нам доступна переменная $this, где хранится объект CDataColumn, который нам также понадобится.
Этого достаточно - приступим :)
На каждой странице порядковый номер начинаются заново
На каждой странице порядковый номер продолжает возрастать
Вот код для первого вариант:
<?php $this->widget( 'zii.widgets.grid.CGridView', array( 'dataProvider' => $modelDataProvider, 'columns' => array( array( 'header' => '#', 'value' => '$row + 1', ), array( 'name' => 'model_name', 'value' => '$data->model_name', ), ), )); ?>
Здесь всё достаточно просто - мы просто выведем значение переменной $row, увеличенное на единицу (потому как отсчёт начинается с 0).
Со вторым вариантом чуть посложнее:
<?php $this->widget( 'zii.widgets.grid.CGridView', array( 'dataProvider' => $modelDataProvider, 'columns' => array( array( 'header' => '#', 'value' => '$this->grid->dataProvider->pagination->currentPage * $this->grid->dataProvider->pagination->pageSize + $row + 1', ), array( 'name' => 'model_name', 'value' => '$data->model_name', ), ), )); ?>
Для того чтобы расчитать номер записи нам необходимо знать номер текущей страницы и количество записей на одну страницу. Для этого мы через переменную $this пробираемся к объекту CPagination, с помощью которого происходит построение страниц, и узнаём у него номер текущей страницы и количество записей на одну из них.