gan tanya dong , tentang cgridview, ane punya coding di controller gini :
public function actionSpkl() {
$model = new Docspkl('search');
if (isset($_GET['Docspkl']))
$model->attributes = $_GET['Docspkl'];
$varspkl = new Spkl;
if (isset($_GET['Spkl']))
$varspkl->attributes = $_GET['Spkl'];
$user = new User;
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); /* panggil model, intinya disini kayaknya untuk masalah ane buat kondisi jika criteria $criteria maka table A yang berelasi dengan table B yang akan tampil, sedangkan criteria $crit maka table B yang akan di tampil */
$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',$<img src='http://www.yiiframework.com/forum/public/style_emoticons/default/cool.gif' class='bbc_emoticon' alt='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 yang tampil berdasarkan kondisi yang di model yang di panggil di controller? misal jika :
$userspkl = Docspkl::model()->listUserSpkl($unit,$bln,$thn); // lihat di controller diatas
$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 …