[Yii Framework] Otak-atik CGridView, If Condition

Misal kita memiliki masalah seperti berikut:

Jika kode=1, maka tampilkan tulisan "Belum diproses"
Jika kode=2, maka tampilkan tulisan "Sedang diproses"
Jika kode=3, maka tampilkan tulisan "Sudah diproses"

Yah, kondisi tersebut tidak terlalu sulit kita lakukan ketika kita membuatnya di form php biasa. Tapi saat di CGridView, kita perlu sedikit mengakalinya dengan beberapa trik..  Berikut langkah-langkah menjalankan trik tersebut :

Misal attribut “kode” tersebut berada di tabel “barang”. Maka pada “Model barang”, masukkan fungsi berikut :

public function statusBarang($i)
	{
		if($i==1)
			return "Belum diproses";
		else if($i==2)
			return "Sedang diproses";
		else 
			return "Sudah diproses";
	}

Jika sudah selesai, maka CGridView yang sebelumnya seperti berikut :

$this->widget('zii.widgets.grid.CGridView', array(
	'id'=>'junction-tab-grid',
	'dataProvider'=>$model->search(),
	'columns'=>array(
		'id',
		'kodeBarang',
		'statusBarang',
		array(
			'class'=>'CButtonColumn',
		),
	),
));

Ubah menjadi seperti berikut :

$this->widget('zii.widgets.grid.CGridView', array(
	'id'=>'junction-tab-grid',
	'dataProvider'=>$model->search(),
	'columns'=>array(
		'id',
		'kodeBarang',
		array(
			'name'=>'Nama Mahasiswa',
			'type'=>'raw',
			'value'=>'Barang::model()->statusBarang($data->statusBarang)',
		),
		array(
			'class'=>'CButtonColumn',
		),
	),
));

Selesai.. Selamat Mencoba..

Semoga membantu…😀


		

13 Responses to [Yii Framework] Otak-atik CGridView, If Condition

  1. Rendra says:

    blog anda ini sangat membantu bagi kami semua yang baru belajar YII, teruskan mas berbagi semoga mas diberkati tuhan
    amin , , ,

  2. hengky Tjhia says:

    Mau tanya, pada function statusBarang($i). saat saya “return $i”, akan terlihat hasil nya pada view. Namun jika saya berikan kondisi, maka akan ditampilkan “BLANK”. Padahal value hanya 0 (nol) dan -1 (minus 1).

  3. hengky Tjhia says:

    Pertanyaan ane sebelumnya gak jadi.. dah ketemu solusinya. Ternyata $data itu variabel yang tidak boleh diubah. thx bgt blog nya sangat membantu sekali.

  4. mrkoeh says:

    gan,
    ane ada maslah nie,
    pas di gridview, ane udah bikin grid kya gni

    TAHUN | KATEGORI | JUMLAH
    2001 | tanah | 2000
    2001 | gedung | 3000
    .
    .
    .2003

    Lha ane pengen nampilinny itu kya gni

    KATEGORI | 2001 | 2002 | 2003
    tanah | 2000 | 500 | 600
    gedung | 3000 | 550 |700

    gmana carany yah gan??
    terimakasih. ..

  5. itu pake query gan agan harus main-mainnya mending..

  6. dibyo says:

    Mas sabit, jika isi $i itu bukan single value?
    semisal saya valuenya $i == 1, 2
    bagaimana ya? fungsi conditionalnya?
    trims

  7. kalo dalam if ya if($i==1 || $i==2)

  8. dibyo says:

    keren mas, solved.🙂 thanks
    aq kog ga kepikiran yak.
    Mas lain cerita lagi ya jika tidak di cgridview? semisal ini di CDetailView.
    googling ada sih 2 kondisi menggunakan ‘value’=>($model->pilihan==”1″)?”M”:”F”,

    aneh hasilnya? adakah cara untuk di CDetailview mas?

  9. ‘value’=>($model->pilihan==”1″)?”M”:”F”, digunakan untuk if yang hanya punya dua kondisi. maksudnya sama aja dengan :
    if($model->pilihan==”1″)
    echo “M”;
    else
    echo “F”;

    • dibyo says:

      engga mas,
      semisal field saya ada yang valuenya “1”, ada yang “2”, ada yang null, ada yang “1,2” jika pake if kondisi diatas ada unsur pemaksaan mas, untuk value null nanti keluar M, dan yang valuenya “1,2” keluarnya M juga.
      Untuk kondisi yang single isi 1 dan 2 hasilnya oke..
      Soalnya di _form saya pake checkbox mas..

    • dibyo says:

      🙂 sharing saja mas, akhirnya bisa.
      dengan menambahkan valuenya seperti :
      ‘value’=>$model->statusPilihan($model->pilihan),
      mksh mas tutorial diatas membantu saya.

  10. sip gan.. emang kasus sperti itu harus pake fungsi..

  11. cleo62 says:

    gan kalo if else nya itu lempar ke halaman gimana ya gan?jadi misal tabelnya begini :

    ID | Jenis Surat | Isi | Lihat Surat |
    1. | 1 | blablabla AA | Lihat |
    2. | 2 | blablabla BBkj | Lihat |
    3. | 3 | blablabla CChv | Lihat |
    4. | 2 | blablabla BBbbb | Lihat |

    Kalo klik “lihat” yang jenis suratnya “1” render ke halaman memo (halaman ini nampilin informasi sesuai no Id nya). Kalo klik yg “lihat” yang jenis suratnya “2” render ke halaman disposisi (halaman ini juga nampilin informasi sesuai no Id nya) dst

    saya udah bikin begini gan di controllernya :

    public function actionSurmas()
    {

    if($this->id_jenissurat=”1″)
    {
    $this->redirect(array(‘Memo’));
    }
    else if($this->id_jenissurat=”2″)
    {
    $this->redirect(array(‘Disposisi’));
    }
    else
    $this->redirect(array(‘Surat Masuk’));
    }

    tapi larinya kok ke halaman memo semua..yang salah dimananya ya gan?

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: