№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.