(oleh : Badiyanto)
Lanjutan dari tutorial sebelumnya, bagian ini akan menampilkan data buku dengan cara memasukkan pengarang terlebih dahulu menggunakan kelas CDbCriteria. Anda bisa menambahkan method dalam model TblBuku.php sebagai berikut :
public function lihatBuku3($id)
{
$criteria=new CDbCriteria(array(
"condition" => "pengarang_id=:pengarang_id",
'params' => array(':pengarang_id'=>$id),
));
$criteria->compare('id',$this->id);
$criteria->compare('judul_buku',$this->judul_buku,true);
$criteria->compare('pengarang_id',$this->pengarang_id);
$criteria->compare('penerbit_id',$this->penerbit_id);
$criteria->compare('isbn_issn',$this->isbn_issn,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
}
Perintah: $criteria=new CDbCriteria(array(
"condition" => "pengarang_id=:pengarang_id",
'params' => array(':pengarang_id'=>$id),
));
pengararan_id nama kolom pada tabel tbl_buku, :pengarang_id", nama parameter,
'params' => array(':pengarang_id'=>$id), memasukkan nilai parameter dengan variabel $id.
$criteria->compare('id',$this->id); digunakan untuk filtering pencarian.
Perintah :
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
Mengirimkan hasil isi dari $model ke CGridView.
Kemudian tambahkan methode dalam TblBukuController.php fungsi aksi actionInputPengarang3() sebagai input nama pengarang dan
actionDaftarBuku3() seperti pada kode berikut :
public function actionInputPengarang3()
{
$model=new TblBuku;
$model->unsetAttributes(); // clear any default values
if(isset($_POST['TblBuku'])){
$id = $_POST['TblBuku']['pengarang_id'];
$this->redirect(array('daftarBuku3','id'=>$id));
}
$this->render('inputPengarang3',array('model'=>$model,));
}
public function actionDaftarBuku3()
{
$model=new TblBuku;
$model->unsetAttributes(); // clear any default values
if(isset($_GET['TblBuku']))
$model->attributes=$_GET['TblBuku'];
$this->render('daftarBuku3',array(
'model'=>$model,
));
}
dan bagian accessRules()
public function accessRules()
{
return array(
array('allow', // allow all users to perform 'index' and 'view' actions
'actions'=>array('index','view','daftarBuku','daftarBuku2','inputPengarang','daftarBuku3','inputPengarang3'),
'users'=>array('*'),
),
array('allow', // allow authenticated user to perform 'create' and 'update' actions
'actions'=>array('create','update','daftarBuku2'),
'users'=>array('@'),
),
array('allow', // allow admin user to perform 'admin' and 'delete' actions
'actions'=>array('admin','delete'),
'users'=>array('admin'),
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
dan tambahkan program dalam view/tbelBuku/ dengan nama file daftarBuku3.php
<?php
/* @var $this TblBukuController */
/* @var $model TblBuku */
/* @var $form CActiveForm */
?>
<div class="wide form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'tbl-buku-form',
'enableAjaxValidation'=>false,)); ?>
<p class="note">Fields with <span class="required">*</span> are required.</p>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'pengarang_id'); ?>
<?php echo $form->dropDownList($model,'pengarang_id',
CHtml::listData(TblPengarang::model()->findAll(), 'id','nama_pengarang'),
array('prompt'=>'= Pilihan =','style'=>'width:200px;')); ?>
<?php echo $form->error($model,'pengarang_id'); ?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton('Proses'); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
Laporan daftar buku buatlah file daftarBuku3.php kemudian disampan ke viws/tblBuku/..
file daftarBuku.php
<h1>
DAFTAR BUKU MENURUT PENGARANG
</h1>
<!-- // menbaca id pengarang// -->
<?php $id = $_GET["id"]; ?>
<?php $this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
array(
'label'=>'Nama Pengrarang',
'type'=>'html',
'value'=>TblPengarang::model()->findByPk($id)->nama_pengarang,
),
array(
'label'=>'Alamat',
'type'=>'html',
'value'=>TblPengarang::model()->findByPk($id)->alamat,
),
),
)); ?>
<!-- menampilkan tabel dengan grid.Cgridwiew//-->
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'tbl-buku-grid',
'dataProvider'=>$model->lihatBuku3($id),
'columns'=>array(
array(
'name'=>'id',
'type'=>'raw',
'header'=>'NO',
'value'=>'CHtml::encode($data->id)',
'htmlOptions'=>array('width'=>'3%','style'=>'text-align:left'),
),
array(
'name'=>'judul',
'type'=>'raw',
'header'=>'JUDUL BUKU',
'value'=>'CHtml::encode($data->judul_buku)',
'htmlOptions'=>array('width'=>'30%','style'=>'text-align:left'),
),
array(
'name'=>'nama_pengarang',
'type'=>'raw',
'header'=>'NAMA PENERBIT',
'value'=>'CHtml::encode($data->penerbit->nama_penerbit)',
'htmlOptions'=>array('width'=>'30%','style'=>'text-align:left'),
),
array(
'name'=>'isbn_issn',
'type'=>'raw',
'header'=>'ISBN/ISSN',
'value'=>'CHtml::encode($data->isbn_issn)',
'htmlOptions'=>array('width'=>'10%','style'=>'text-align:left'),
),
),
)); ?>
Salahkan dicoba http://localhost/coba/index.php?r=inputPengarang3