[Yii Framework] Otak-atik CGridView, Change Pager Label

Yii pastinya telah membuat default untuk komponen yang digunakan di dalamnya, termasuk untuk labelnya. Salah satunya pada CGridView, yaitu pada label halaman “Previous” dan “Next”. Berikut langkah-langkah untuk merubah label tersebut:

Awalnya CGridView memiliki code berikut:

<?php $this->widget('zii.widgets.grid.CGridView', array(
	'id'=>'mddc-grid',
	'dataProvider'=>$model->search(),
	'filter'=>$model,
	'columns'=>array(
		'id',
		'isi',
		array(
			'class'=>'CButtonColumn',
		),
	),
)); ?>

nah, untuk merubahnya anda dapat mengedit kode tersebut menjadi seperti berikut:

<?php $this->widget('zii.widgets.grid.CGridView', array(
	'id'=>'mddc-grid',
	'dataProvider'=>$model->search(),
	'filter'=>$model,
	'pager'=>array(
		'header'=>'',
		'prevPageLabel'=>'&lt; Sebelumnya',
		'nextPageLabel'=>'Selanjutnya &gt;',
	),
	'columns'=>array(
		'kdDdc',
		'ketDdc',
		array(
			'class'=>'CButtonColumn',
		),
	),
)); ?>

Penjelasan : pada code di atas, saya merubah tabel “prev” menjadi “Sebelumnya” dan “next” menjadi “Selanjutnya”..

Selesai.. Selamat mencoba…

Semoga membantu…😀

23 Responses to [Yii Framework] Otak-atik CGridView, Change Pager Label

  1. fachrizal says:

    gan tanya dong ,,, tentang cgridview,,, ane punya coding di controller gini :

    if(isset($_POST[‘Spkl’])){
    $varspkl->attributes=$_POST[‘Spkl’];
    $thn = $varspkl->attributes[‘tahun’];
    $bln = $varspkl->attributes[‘bulan’];
    $unit = $varspkl->attributes[‘namaunit’];
    //print_r($unit);

    if(!empty ($unit)){
    $anggaran = $varspkl->searchAnggaran($thn,$bln,$unit);

    if($anggaran==0){
    $userspkl = Docspkl::model()->listUserSpkl(10,10,10);
    $tampil = 0;
    }else{
    $userspkl = Docspkl::model()->listUserSpkl($unit,$bln,$thn);
    $tampil = 1;
    }
    }else{
    $userspkl = Docspkl::model()->listUserSpkl(10,10,10);
    $tampil = 0;
    }
    }
    else {
    $userspkl = Docspkl::model()->listUserSpkl(10,10,10);
    $tampil = 0;
    }

    $this->render(‘spkl’,array(
    ‘model’=>$model,
    ‘varspkl’=>$varspkl,
    ‘anggaran’=>$anggaran,
    ‘userspkl’=>$userspkl,
    ‘tampil’=>$tampil,
    ‘bln’=>$bln,
    ‘thn’=>$thn,
    ));

    nah untuk di model nya ane pake ginian :
    public function listUserSpkl($u,$b,$t){
    $criteria = new CDbCriteria;
    $criteria->compare(‘namaunit’,$u);
    $criteria->compare(‘bandposisi’, ‘VI’);
    $criteria->compare(‘bulan’,$b);
    $criteria->compare(‘tahun’, $t);
    $jmlbaris = Docspkl::model()->count($criteria);

    //$datafilter = array_filter($dataprovider);
    if($jmlbaris != 0){
    return new CActiveDataProvider($this,array(‘criteria’=>$criteria));
    }

    else{
    $crit = new CDbCriteria;
    $crit->compare(‘namaunit’,$un);
    $crit->compare(‘bandposisi’, ‘VI’);

    return new CActiveDataProvider(User, array(
    ‘criteria’ => $crit,
    ));
    }
    }

    di view gini gan :

    $this->widget(‘zii.widgets.grid.CGridView’, array(
    ‘id’=>’docspkl-grid’,
    ‘dataProvider’=>$userspkl,
    ’emptyText’=>’Data Tidak Ditemukan’,
    ‘columns’=>array(
    //’spkl.iddocsspkl’,
    ‘nik’,
    ‘nama’,
    array(
    ‘name’=>’status’,
    ‘value’=>’Docspkl::model()->statusSpkl($data->status)’,
    ),
    array(
    ‘name’=>’Lembur(Jam)’,
    ‘value’=> ‘SpklDetail::model()->hitungJamLemburTotal($data->iddocsspkl)’,
    ),
    array(
    ‘name’=>’Lembur(Rp)’,
    ‘value’=> ‘SpklDetail::model()->hitungRencanaAgrLembur($data->iddocsspkl)’,
    ),
    array(
    ‘class’=>’CButtonColumn’,
    ‘template’=>'{createspkl}{viewspkl}’,
    ‘buttons’=>array(
    ‘createspkl’=>array(
    ‘label’=>'[Buat SPKL]’,
    ‘url’=> ‘Yii::app()->createUrl(“docspkl/create”,array(“nik”=>$data->nik)’,
    ‘visible’=> ‘Docspkl::model()->visibleBuatLihatSpkl($data->nik,$data->bulan,$data->tahun) == FALSE’,
    ),

    ‘viewspkl’=>array(
    ‘label’=>'[Lihat SPKL]’,
    ‘url’=> ‘Yii::app()->createUrl(“spkldetail/viewdetail”,array(“iddocsspkl”=>$data->iddocsspkl))’,
    ‘visible’=> ‘Docspkl::model()->visibleBuatLihatSpkl($data->nik,$data->bulan,$data->tahun) == TRUE’,
    ),
    ),
    ),
    ),
    ));

    yang ingin ane tanya gan ,, gmana ya biar di digridview ada kondisi ya gan,, misal jika :

    $userspkl = Docspkl::model()->listUserSpkl($unit,$bln,$thn);

    $userspkl dapat dari hasil model $criteria menghasilkan di gridview A, tapi jika $userspkl dapat dari hasil $crit menghasilkan gridview B ???? ane bingung gan ,, mohon di bantu yak …

  2. wah gan, panjang bnget gan.. ane jadi bingung🙂 bisa di persingkat ga gan? mksd ny code ny ga usah d sertain dlu.. ceritain aja skenario yg mau agan buat..

  3. fachrizal says:

    gini gan ,,, ane pingin di gridview itu di dapat dari kondisi di model itu gan ,,, coba agan lihat di model itu gan ,,,, misalnya hasil dari cactiverecord $criteria, maka di gridview akan tampil dengan dataprovider dengan kondisi yang di model itu yang $criteria tp jika kondisi di model menghasil cactiverecord $crit makan di gridview akan tampil dgn dataprovider dengan kondisi di model yang $crit gan ,,, nah di model itu yang $criteria,$crit itu di panggil lewat controller itu gan …

    ane bikin model gitu karena jika $criteria dari table A n $crit dari table B gitu gan …., ngerti gak gan ??? moga2 agan ngerti, gak tau mau tanya kemana lagi …

  4. fachrizal says:

    masalahnya ane itu gini gan,,, di cgridview itu ada field status kan gan, nah itu di dapat dari table A misalnya dengan dataprovider dari model yang mghasilkan cactiverecord dari $criteria, sedangkan jika dari model menghasilkan cactiverecord dari $crit maka status itu dari table B yang berelasi dengan table A harus dirubah gan jadi skpl.status,,,, nah itu kondisi yang ane gak ngerti..

  5. fachrizal says:

    bukan gan ,,, seperti tutorial yang agan kasih , itu dulu pernah nyelesain maslah ane juga gan ,, tp maslahnya sperti comment ane diatas ini yang lebih lengkapnya ….

  6. kalo kasus ny gtu mending agan fungsi yang punya kondisi tersebut. Ntar di fungsi ny kasih kondisi yg crit sama criteria, trus dari situ dy ngembaliin nilai sesuai dengan kondisi ny masing2 gan..

  7. fachrizal says:

    bingung gan, fungsi yang mana ??? contohin dong gan ,,, ane bingung di controller itu gan, di variable ini gan : $userspkl = Docspkl::model()->listUserSpkl($unit,$bln,$thn);

    ane berpikir kondsi di letakkin disitu, cuma kondisinya gmana ya ??? atau solusi agan tu di contohin,,,,,, ane gak tau gan ,,,, fungsi yang mana di kasih kondisi terus di baca di view gmana tu …?

  8. misal:
    function ambilNilai($a)
    {
    $isi;
    if($a=’A’)
    {
    $isi=ambil nilai dari criteria;
    }
    else
    {
    $isi=ambil nilai dari crit;
    }
    }

  9. fachrizal says:

    masih blank gan ,,,,

    klo di codingan ane kan gini tu di model :

    public function listUserSpkl($u,$b,$t){
    $criteria = new CDbCriteria;
    $criteria->compare(‘namaunit’,$u);
    $criteria->compare(‘bandposisi’, ‘VI’);
    $criteria->compare(‘bulan’,$b);
    $criteria->compare(‘tahun’, $t);
    $jmlbaris = Docspkl::model()->count($criteria);

    //$datafilter = array_filter($dataprovider);
    if($jmlbaris != 0){
    return new CActiveDataProvider($this,array(‘criteria’=>$criteria));
    }

    else{
    $crit = new CDbCriteria;
    $crit->compare(‘namaunit’,$un);
    $crit->compare(‘bandposisi’, ‘VI’);

    return new CActiveDataProvider(User, array(
    ‘criteria’ => $crit,
    ));
    }
    }

    gmana perubahannya ??

    di controller untuk manggil fungsi dimodel diatas macem gini :

    $userspkl = Docspkl::model()->listUserSpkl($unit, $bln, $thn);

    gmana ya gan ???

  10. mksd ny gmna ya gan? dari coding agan d atas, mslah ny ada dmana gan?

  11. fachrizal says:

    masalahnya di view gan,,,, ,, karena kondisi di model yang $criteria, di gridview kan panggil datanya pake ‘name’=>status,,,

    nah di kondisi B seharusnya ‘name’=>spkl.status

    itu masalahnya dengan kondisi model macem di atas n cari panggilnya di controller,,, bingungnya ya pas di view itu gan……, kondisi yang hasilkan $criteria dari tabel A, sedangkan untuk kondisi $crit untuk tampilin tabel B… gitu gan …, udah kebayang kan gan???

    oh ya gan ,,, boleh dong gan minta ym nya …. ane pingin banget belajar yii dari agan ….

  12. hehe, jujur gan. Ane bingung maksd ny??

    klo YM ane sabitzhabit@yahoo.com gan..

  13. fachrizal says:

    mau tanya dong tentang query :

    misal di tabel A , ane ada data seperti ini :

    id_dok, nik, nama, unit,tahun, bulan, status
    1,111000,Andi, Unit A, 2011,12,Approve,
    2,111001,Fajar,Unit B,2011,12,Approve,
    3,111002,Andrie, Unit A, 2012,1,Approve,

    terus di tabel B, ane punya data gini :

    id,nik,nama
    1,111000,Andi, Unit A,
    2,111001,Fajar,Unit B,
    3.111002,Andrie, Unit A,
    4.111003,Fachri, Unit A

    nah pingin query jika data yang di filter tu tahun,bulan misal user isi inputan tahun = 2011, bulan=12, unit = Unit A maka akan tampil gini :

    nik,nama,unit,tahun,bulan
    111000,Andi, Unit A, 2011,12,Approve
    111002,Andrie, Unit A, null,null,null
    111003,Fachri, Unit A, null,null,null

    nah misal jika user isi inputan tahun = 2012, bulan = 1, dan unit = Unit A,
    maka yang akan tampil sbb:

    nik,nama,unit,tahun,bulan
    111000,Andi, Unit A, null,null,null
    111002,Andrie, Unit A, 2012, l, Approve
    111003,Fachri, Unit A, null,null,null

    gmana ya gan query nya ????
    mohon pencerahannya gan …, datanya sih gak normal gan ,,,, maklum data yang ane dapat dari kantor macem gitu ……

  14. saya lupa persis ny gmana gan, tapi coba gooling aja dg kata kunci left join” ato “right join” ato “full join” gan..

  15. fachrizal says:

    oke gan …., ane coba pake left join gak bisa n right join gak bisa juga ,,, ane coba full join dulu yak … thx gan ..

  16. junithe says:

    Gan, kalo misalnya mau ngerubah summarynya gimana ya?
    defaultnya kan displaying 10 of bla bla bla…
    Kalo mau nampilin “Menampilkan 1-x dari y” itu gmn ya?
    thx

  17. @junithe : coba lihat dokumentasi CGridview gan, saya lupa persisnya, kalo ga salah pake property “textSummary”..

  18. gan, mau tanya. ada tutorial untuk menghilangkan value empty pada filter di cgridview engga ya ?
    saya ini bikin menu search dgn menggunakan dropdownlist, yaitu modul dan kategori. nah, saya hanya ingin mengisi pilihan modul saja, untuk kategori saya kosongkan. saat saya search, pilihan kategori yg saya isi, di filter cgridview secara default nilainya empty, sehingga tidak ada nilai yg muncul. kira” ada solusi yg bisa diberikan engga ya gan ? Makasih.🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: