Шпаргалка касаемо CGridView в yii
CActiveDataProvider
// модель для фильтрации текущего дата-провайдера $filter = new Role(); $filter->unsetAttributes(); if(isset($_GET['Role'])){ $filter->attributes = $_GET['Role']; } // Сама фильтрация $criteria=new CDbCriteria; $criteria->compare('rid',$filter->rid); // Сортировка $sort = new CSort(); $sort->defaultOrder = 'name'; // по умолчанию $sort->attributes = array( 'rid', // Если надо усложнить сортировку 'name'=>array( 'asc'=>'name', 'desc'=>'name desc', ), ); $DataProvider = new CActiveDataProvider(Role::model(), array( 'criteria'=>$criteria, 'sort'=>$sort, 'pagination'=>array( 'pageSize'=>20, ), )); $this->render('greed', array( 'DataProvider' => $DataProvider, 'filter' => $filter ));
Вьюха «greed»:
/** * @var CActiveDataProvider $DataProvider * @var Role $filter */ /** @var CSort $sort */ $sort = $DataProvider->getSort(); echo $sort->link('rid', 'По коду'); // Выводим ссылку на сортировку $this->widget('zii.widgets.grid.CGridView', array( 'id' => 'id-greed', 'dataProvider' => $DataProvider, 'filter' => $filter, 'columns' => array( array( 'class'=> 'CCheckBoxColumn', // колонка в виде чекбокса 'id'=>'active', // если хотим что бы имя отличалось от id: 'checkBoxHtmlOptions'=> array('name'=> 'select_item[]'), 'selectableRows' => 2, // Выделение нескольких строк ), array( 'name' => 'rid', 'header' => 'ID', 'htmlOptions'=>array("width"=>"50px"), // ширина колонки 50px ), array( 'name' => 'name', 'header' => 'Название', 'type'=>'raw', 'value' => 'CHtml::textField("role_name[$data->rid]", $data->name, array("style"=>"width:99%"))', ), ) ));
CSqlDataProviderCArrayDataProvider
Вывод таблицы на основе запроса.
Контроллер:
$sql = 'SELECT rid,name FROM role'; /** @var CDbCommand $raw */ $raw = Yii::app()->db->createCommand($sql); $count = Yii::app()->db->createCommand('SELECT COUNT(*) FROM (' . $sql . ') as item_count')->queryScalar(); $DataProvider = new CSqlDataProvider($raw, array( 'keyField' => 'rid', 'totalItemCount' => $count, 'sort' => array( 'attributes' => array('rid','name'), // поля 'defaultOrder' => array('rid' => CSort::SORT_ASC), // сортировка по умолчанию ), 'pagination' => array( 'pageSize' => 10, // элементов на странице ), )); $this->render('greed', array('DataProvider'=>$DataProvider));
Вывод таблицы на основе массива:
$sql = 'SELECT rid,name FROM role'; $row_data = Yii::app()->db->createCommand($sql)->queryAll(); $DataProvider = new CArrayDataProvider($row_data, array( 'keyField' => 'rid', 'pagination' => array( 'pageSize' => 10, // элементов на странице ), )); $this->render('greed', array('DataProvider'=>$DataProvider));
Вьюха «greed»:
/** * @var CSqlDataProvider $DataProvider */ $this->widget('zii.widgets.grid.CGridView', array( 'id' => 'id-greed', 'dataProvider' => $DataProvider, 'columns' => array( array( 'name' => 'rid', 'header' => 'ID', ), array( 'name' => 'name', 'header' => 'Название', 'value' => '$data["rid"]." - ".$data["name"]' ) ) ));
I am now not positive where you’re getting your info, but great topic.
I must spend a while studying much more or working
out more. Thanks for wonderful information I used to be looking for this info for my mission.