№8 Dars — Gridlar bilan ishlash.

№8 Dars — Gridlar bilan ishlash.

№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.
e284968 dars gridlar bilan ishlash 65e61ba8741e1Grid 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.