Итак, мы вывели и модифицировали результат нашего запроса в таблицу с 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
