[Yii Framework] Membuat Editable dengan Yii Booster
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