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:

  1. 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,
            ));
        }

  2. 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>&nbsp;</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;

  3. Tampilan saat masih di header atau tbl_group adalah :
  4. Tampilan saat diklik View
  5. 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.

Header Detail dengan Yii