Jumat, 29 Maret 2013

3/29/2013
4
Saat ini akhirnya ada waktu luang untuk membuat artikel pada blog ini, sebab tugas-tugas kuliah telah selesai :D dan kali ini saya akan membahas pembuatan atau penerapan editable milik Yii Booster pada project yii anda.

Jangan lupa untuk memasang Yii Booster atau Yii Bootstrap Editable jika anda menggunakan Yii Bootstrap. Untuk langkah-langkahnya, pertama Anda buat table seperti berikut.

CREATE TABLE IF NOT EXISTS `people` (
  `PersonId` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `Name` varchar(45) NOT NULL,
  `Age` int(10) unsigned NOT NULL,
  `RecordDate` datetime NOT NULL,
  PRIMARY KEY (`PersonId`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin5 AUTO_INCREMENT=8 ;

INSERT INTO `people` (`PersonId`, `Name`, `Age`, `RecordDate`) VALUES
(1, 'Benjamin Button', 17, '2011-12-27 00:00:00'),
(2, 'Douglas Adams', 42, '2011-12-26 00:00:00'),
(3, 'Isaac Asimov', 26, '2011-12-28 00:00:00'),
(4, 'Thomas More', 61, '2011-12-27 00:00:00'),
(5, 'Ihsan Oktay Anar', 44, '2012-01-03 20:55:02');

kemudiah buat aplikasi yii baru, dan generate table di atas dengan Bootstrap Generator dengan nama controller People

Pada controller  PeopleController.php, tambahkan script berikut.

public function accessRules()
{
    return array(
        ...
        array('allow', // allow authenticated user to perform 'create' and 'update' actions
            'actions'=>array('create','update','editable'),
            'users'=>array('@'),
        ),
        ...
    );
}

public function actionEditable()
{
    if(Yii::app()->request->isAjaxRequest)
    {
        Yii::import('bootstrap.widgets.TbEditableSaver');
        $es=new TbEditableSaver('People');
        $es->update();
    }
    else
        throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
}
 

kemudian buka view admin.php, ini untuk memasang Editable pada CGridView/TbGridView

<?php $this->widget('bootstrap.widgets.TbGridView',array(
    'id'=>'people-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        'PersonId',
        array(
            'class'=>'bootstrap.widgets.TbEditableColumn',
            'name'=>'Name',
            'sortable'=>true,
            'editable'=>array(
                'url'=>$this->createUrl('editable'),
                'placement'=>'right',
                'inputclass'=>'span3'
            )
        ),
        'Age',
        'RecordDate',
        array(
            'class'=>'bootstrap.widgets.TbButtonColumn',
        ),
    ),
)); ?>


dan kemudian buka juga view.php untuk menerapkan Editable pada View

<?php $this->widget('bootstrap.widgets.TbEditableDetailView', array(
    'id' => 'People-detail',
    'data' => $model,
    'url' => $this->createUrl('people/editable'),  
    'attributes'=>array(
        'PersonId',
        'Name',
        'Age',
        'RecordDate',
    )
)); ?>

Perhatikan pada controller tepatnya pada fungsi actionEditable, itu berguna untuk menyimpan data yang di kirim melalui editable dan controller tersebut hanya terbuka melalui ajax saja, jadi jika di buka melalui url tidak akan terbuka.

dan pada admin.php dan view.php itu terdapat beberapa script untuk editable, dan untuk lebih jelasnya dalam penggunaan editable silahkan kunjungi http://yii-booster.clevertech.biz/components.html

berikut penampakannya.



Download
 Password : didanurwanda.blogspot.com

4 komentar:

  1. Thanks gan, pernah liat cara ini di forum yii. Good Post!

    BalasHapus
  2. ada pesan error kek gini gan:
    Alias "bootstrap.widgets.TbEditableColumn" is invalid. Make sure it points to an existing PHP file and the file is readable.

    kenapa ya???

    BalasHapus
    Balasan
    1. mungkin masalah permission, mirip sama ini https://github.com/malyshev/yii-debug-toolbar/issues/63

      Hapus
    2. Saya menggunakan widget ini tapi kenapa data yang saya edit di tabel tidak tersimpan di data basenya.

      Hapus

Mohon tidak mencantumkan URL pada komentar yang bersifat promosi.