Dalam pembuatan program kita biasa dengan masalah header detail misal dengan relasi gambar Group – Group_Menu di bawah ini.
Di sini Group sebagai header dan Group Menu sebagai detail. Langkah-langkah untuk membuat relasi Header-Detail adalah sebagai berikut:
- Menyiapkan data detail di class header
Pada contoh ini kita akan masuk di controllerl class untuk tabel tbl_group yaitu class GroupController. Pada action View siapkan data detail seperti berikut ini :
public function actionView($id)
{
$detailDataProvider=new CActiveDataProvider(‘GroupMenu’,array(
‘criteria’=>array(
‘condition’=>’group_id=:group_id’,
‘params’=>array(‘:group_id’=>$id),
),
‘pagination’=>array(
‘pageSize’=>10,
),
));$this->render(‘view’,array(
‘model’=>$this->loadModel($id),
‘detailDataProvider’=>$detailDataProvider,
));
} - Tampilkan informasi detail pada views/group/view.php dengan tambahan code sebagai berikut
<?php
$referer_var=”s_group_menu_referer”;
Yii::app()->user->setState($referer_var,$_SERVER[‘REQUEST_URI’]);
?>
<div> </div>
<hr class=”pemisah”/>
<div style=”margin: 0px”>
<?php echo CHtml::Button(‘Add’,array(‘onClick’=>”location=’index.php?r=groupMenu/create&group_id=$model->group_id'”)); ?>
</div>
<?php $this->widget(‘zii.widgets.grid.CGridView’, array(
‘id’=>’group-menu-grid’,
‘ajaxUpdate’=>false,
‘dataProvider’=>$detailDataProvider,
‘columns’=>array(
‘group_menu_id’,
‘group_id’,
‘menu_id’,
‘no_seq’,
‘remark’,
‘is_active’,
array(
‘class’=>’CButtonColumn’,
‘template’ => ‘{view} {update} {delete}’,
‘buttons’ => array(
‘view’ => array(
‘label’=>’View’,
‘url’=>’Yii::app()->createUrl(“/groupMenu/view”, array(“id” => $data->group_menu_id))’,
),
‘update’ => array(
‘label’=>’Update’,
‘url’=>’Yii::app()->createUrl(“/groupMenu/update”, array(“id” => $data->group_menu_id))’,
),
‘delete’ => array(
‘label’=>’delete’,
‘url’=>’Yii::app()->createUrl(“/groupMenu/delete”, array(“id” => $data->group_menu_id))’,
),
),
),
),
)); ?>Tambahkan juga di css/main.css
.pemisah
{
border-bottom: solid 1px #569dc8;
} - Tampilan saat masih di header atau tbl_group adalah :
- Tampilan saat diklik View
- Tentu saja kita ingin supaya conteks Add ini benar.
Oleh sebab itu kita mengedit GroupMenuController bagian Create:
public function actionCreate($group_id)
{
$model=new GroupMenu;
$model->group_id=(int)$group_id;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);if(isset($_POST[‘GroupMenu’]))
{
$model->attributes=$_POST[‘GroupMenu’];
if($model->save())
$this->redirect(array(‘view’,’id’=>$model->group_menu_id));
}$this->render(‘create’,array(
‘model’=>$model,
));
}
Dan juga views/groupMenu/_form dengan menghilangkan:
<div class=”row”>
<?php echo $form->labelEx($model,’group_id’); ?>
<?php echo $form->textField($model,’group_id’); ?>
<?php echo $form->error($model,’group_id’); ?>
</div>
Kunjungi www.proweb.co.id untuk menambah wawasan anda.