№8 Dars — Gridlar bilan ishlash.
Masalani qo`yilishi: Jadvalimizdagi barcha kompaniyalarni ro`yhati bilan birgalikda saytlari nomlarini gridimizda chiqarish.
Birinchi navbatda jadval yaratishimiz kerak bo`ladi, agar jadvalimiz bo`lsa unda o`sha jadvaldan foydalanib ham ishlasak bo`ladi. Bizning misolimiz uchun «company» jadvali yaratiladi.
1 – jadvalimizni yaratamiz
CREATE TABLE `company` ( `ID` INT(11) NOT NULL AUTO_INCREMENT, `company` VARCHAR(100) NULL DEFAULT NULL, `site` VARCHAR(100) NULL DEFAULT NULL, PRIMARY KEY (`id`) ) COLLATE='utf8_general_ci' ENGINE=InnoDB
2-jadvalimizni kerakli ma`lumotlar bilan to`ldiramiz.
INSERT INTO `company` (`company`, `site`) VALUES ('Google', 'google.com'); INSERT INTO `company` (`company`, `site`) VALUES ('Mail', 'mail.ru'); INSERT INTO `company` (`company`, `site`) VALUES ('Yiiframework', 'yii.framework.com'); INSERT INTO `company` (`company`, `site`) VALUES ('Nisan', 'nisan.org'); INSERT INTO `company` (`company`, `site`) VALUES ('Opel', 'opel.com'); INSERT INTO `company` (`company`, `site`) VALUES ('Apple', 'apple.com');
3- shu jadvalimiz uchun Gii genaratori orqali model hosil qilamiz.
4-view pagimizga quyidagicha kod kiritamiz va u quyidagicha directoriyada:
protected/views/site/gridview.php
widget('zii.widgets.grid.CGridView', array( 'dataProvider' => $model->search(), 'filter' => $model, 'columns' => array( array( 'name' => 'company', 'type' => 'raw', 'value' => 'CHtml::encode($data->company)' ), array( 'name' => 'site', 'type' => 'raw', 'value' => 'CHtml::link(CHtml::encode($data->site))', ), ), )); ?>
5-ishimiz modelimizdagi search funksiyasiga qo`shimcha quyidagicha kodlar qo`shishimiz kerak bo`ladi.
protected/models/Company.php
public function search() { $criteria=new CDbCriteria; $criteria->compare('ID',$this->ID); $criteria->compare('company',$this->company,true); $criteria->compare('site',$this->site,true); return new CActiveDataProvider($this, array( 'criteria'=>$criteria, 'sort'=>array( // dastlabki holat uchun company bo`yicha tartiblash 'defaultOrder'=>'company ASC', ), 'pagination'=>array( // griddagi satrlar sonini berish. Agar ma`lumotlar soni 5 tadan ko`p bo`lsa // pager hosil qiladi va maxsus qo`shimcha page yaratadi. 'pageSize'=>5 ), )); }
6- ish controllerimizda quyidagicha action yaratishimiz kerak bo`ladi.
public function actionGrid() { // search funksiyasi asosida model nusxasni hosil qilish $model = new Company('search'); $this->render('gridview', array('model'=>$model)); }
Shu ishlardan keyin xech qanday muommo chiqmasa quyidagicha grid ko`rishi web sahifamizda paydo bo`ladi.
Grid uchun tayyorlangan birinchi darsimiz tamom bo`ldi. Har xil usuldagi ko`pgina gridlar va ular bilan ishlash usullari mavjud. Keyingi sahifalarimizda yana batafsil yoritib borishga harakat qilamiz.
Manba:
Web Dasturlash
№8 Dars — Gridlar bilan ishlash.