Итак, мы вывели и модифицировали результат нашего запроса в таблицу с daftar situs judi slot online terpercaya помощью CGridView компонента Zii виджета, теперь было бы здорово не меняя самого запроса научиться сортировать полученную информацию просто кликнув на заголовок столбца. В этом нам поможет класс CSort и параметр массива CSqlDataProvider sort, но обо всем подробнее.
Итак, начало нашего кода уже довольно стандартное:
$sql = "select * from test_table"; $rows = Yii::app()->db->createCommand($sql)->queryAll(); $count = count($rows);
Объявляем класс CSort:
$sort = new CSort();
И вызываем потомков этого класса:
$sort->attributes = array( 'id' => array( 'id' => array( 'asc' => 'test_table.id asc', 'desc' => 'test_table.id desc', ), 'Имя' => array( 'asc' => 'test_table.first_name asc', 'desc' => 'test_table.first_name desc', ), 'Фамилия' => array( 'asc' => 'test_table.second_name asc', 'desc' => 'test_table.second_name desc', ), );
В результате получаем массив параметров нужных для сортировки по столбцу id, Имя, Фамилия, можно было бы вместо test_table.имя_столбца situs judi slot online terpercaya написать просто имя_столбца, так как у нас запрос данных из одной таблицы. Обратите внимание что первое id это id из keyField CSqlDataProvider. Теперь немного модифицируем код $SqldataProvider дабы вставить туда наши параметры сортировки:
$SqldataProvider = new CSqlDataProvider($sql, array( 'keyField'=>'id', 'totalItemCount'=>$count, 'pagination'=>array( 'pageSize'=>100, ), 'sort'=>$sort, ));
И, конечно, сам вывод данных в виджет:
$this->widget('zii.widgets.grid.CGridView', array( 'dataProvider'=>$SqldataProvider, 'enablePagination' => true, 'columns'=>array( array( 'name' => 'id', 'value' => 'CHtml::encode($data["id"])', 'type' => 'raw', ), array( 'name' => 'Имя', 'value' => 'CHtml::encode($data["first_name"])', 'type' => 'text', ), array( 'name' => 'Фамилия', 'value' => 'CHtml::encode($data["second_name"])', 'type' => 'text', ), ), ));
На этом можно было бы заканчивать и приводить полный листинг кода, который достаточно просто засунуть в ваше представление и judi slot online jackpot terbesar оно оживет, вот только получившийся код уже не маленький и правильнее его уже делить в соответствии с MVC подходом. Для этого в папке models создаем php файл следующего содержания:
<?php class test { public function get_testtablet_dataProvider() { $sql = "select * from test_table"; $rows = Yii::app()->db->createCommand($sql)->queryAll(); $count = count($rows); $sort = new CSort(); $sort->attributes = array( 'id' => array( 'asc' => 'test_table.id asc', 'desc' => 'test_table.id desc', ), 'Имя' => array( 'asc' => 'test_table.first_name asc', 'desc' => 'test_table.first_name desc', ), 'Фамилия' => array( 'asc' => 'test_table.second_name asc', 'desc' => 'test_table.second_name desc', ), ); $SqldataProvider = new CSqlDataProvider($sql, array( 'keyField'=>'id', 'totalItemCount'=>$count, 'pagination'=>array( 'pageSize'=>100, ), 'sort'=>$sort, )); return $SqldataProvider; } } ?>
И сохраняем его с именем test.php, в целом это и будет наша модель данных, теперь ее нужно вызвать из представления и в переменную записать результат выполнения функции get_testtablet_dataProvider, делается это так:
$dd = New test; $SqldataProvider = $dd->get_testtablet_dataProvider();
Остается только добавить код вывода данных из виджета о котором говорилось чуть выше. В результате у вас должно получится что-то похожее на это:
comments powered by HyperComments