Skip to main content

Membuat Button Toggle di GridView Yii2 + Pjax + Ajax

Membuat Button toggle di Grid view sedikit membuat pusing kepala ...apalagi newbe seperti saya heheh... setelah bertempur semalaman akhirnya saya mendapatkan scriptnya...
berikut arsip saya untuk Membuat Button Toggle di GridView Yii2 + Pjax + Ajax

dalam hal ini saya asumsikan anda sudah menguasai Yii gridview dan konfig dasar dari yii2 , saya menggunakan yii2 Advance template...



kasus kali ini saya memiliki tabel post_item dan terdapat kolom status , kolom status digunakan untuk menandai jika postingan ber status terpublih atau tidak terpublish


pertama tama kita atur script tampilan di View :

kita membuat value dari kolom status menjadi sebuah tombol agar nantinya saat kita klik tombol tersebut akan mengupdate value status di table post_item:
berikut script nya:

INDEX VIEW
<?php Pjax::begin(['id'=>'postlist']); ?>     <!--berikan id untuk Pjax -->                <?= GridView::widget([
                    'dataProvider' => $dataProvider,
                    'filterModel' => $searchModel,
                    'columns' => [
                        // ------ kolom lainnya ---                        [
                            'label' => 'Published',
                            'format' => 'raw',
                            'value' => function($data,$key,$index){
                            $data['status'] == '0' ? ( $pub = 'Not Publish' ) : ( $pub = 'Published' ); // untuk mengganti tulisan di publish button               
                            return yii\bootstrap\Html::Button($pub,[
                                    'onclick' => '$.ajax({ '
                                          . 'type:"POST", '
                                          . 'url:"'.Url::to(['post-item/publish']).'", '   //memanggil function publish
                                          . 'data:"model="+'.$data['id'].','     //model adalah variable penampung data yang akan di kirim $data['id'] data yang akan di kirim atau POST                                          . 'dataType:"json",'
                                          . 'success:function(data){ '
                                            . ' $.pjax.reload({container:"#postlist"});'   //refresh bagian Pjax yang mempunyai ID postlist (sesuai kan id di pjax anda)                                            . '}, '
                                        . 'error: function(data){ '
                                            . 'alert( "Error occured.please try again " ); alert(data) ; '
                                            . '},'
                                        . 'dataType:"html"'
                                        . '});',
                                ]);
                            }
                          ],
                      //  ------ kolom lainnya ---     
                        ['class' => 'yii\grid\ActionColumn'],
                    ],
                ]); ?>
            <?php Pjax::end(); ?>   


CONTROLLER

//--- function di controler yang lainnya -- protected function findModel($id)
    {
        if (($model = PostItem::findOne($id)) !== null) {
            return $model;
        } else {
            throw new NotFoundHttpException('The requested page does not exist.');
        }
    }

 public function actionPublish(){
        if (Yii::$app->request->isAjax){        //memeriksa request jika tombol publis di tekan             if(\Yii::$app->request->post('model')){    //memeriksa apakah variable model yang ada di index view telah di POST                     $id = $_POST['model'];    // mengambil data dari variable model  saya mengisinya dengan $data['id'] value id atau primary key dari tabel post_item                    $model = $this->findModel($id);  //pengambilan atau pencarian data di table post_item dengan function find model// kode tambahan anda sendiri                    $model->update_at = date("Y-m-d\TH:i:sO");
                    $model->setPublish();  
// kode tambahan anda sendiri                    $model->save();    //simpan atau update data            }
         
         
        }
    }
//--- function di controler yang lainnya --

Kode di atas adalah bentuk sederhana , sulahkan mengcostume sendiri untuk tampilan button atau persiapan sebelum melakukan save model atau mengembangkannya

berikut hasilnya:


Demikian yang bisa saya share sekaligus untuk arsip saya .

Comments

  1. This supply rewards gamers with a sure variety of spins on 파라오 카지노 a selected, predetermined slot game. These can be provided on their own as a no deposit bonus, as an additional of a first deposit deal, or seasonally as a miscellaneous promotion. This deal is exactly what the name implies – a suggestion might be} accessed with none obligation to make a deposit. To avail of offers like these, gamers usually solely need to register an account with the operator.

    ReplyDelete

Post a Comment

Popular posts from this blog

Format tanggal dan jam pada bahasa pemrograman PHP (Date Format)

PHP (PHP: Hypertext Processor) Merupakan salah satu bahasa pemrograman yang sangat dikenal di kalangan programer. dan versi PHP paling terbaru pada tahuin postingan ini dibuat adalah versi 7.3. Artikel kali ini berkaitan dengan salah satu parameter pada fungsi yang sering digunakan untuk menampilkan maupun memformat output tanggal dan jam (waktu). beberapa fungsi yang sering digunakan diantaranya date() dan date_format(). Fungsi date() fungsi date() umumnya digunakan untuk mengambil waktu dari sytem / waktu server. fungsi date memiliki beberapa parameter diantaranya: $format: Digunakan untuk menentukan bentuk output waktu yang di inginkan. $timestamp:  (Opsional)  Nilai satuan waktu dalam UNIX sytem , bertipedata integer. Fungsi date_format() fungsi date_format() adalah fungsi untuk merubah bentuk output dari variable yang bertipedata date. fungsi ini biasanya didahului dengan fungsi date_create(),   yaitu salah satu fungsi php yang membuat...

Merubah Folder Publik Pada Laravel 5.8

Laravel merupakan salah satu framework yang saat ini sedang ramai digunakan, Laravel memiliki struktur direktori / folder yang cukup mudah dipahami bahkan kita bisa membuat custom folder sendiri sesuai keperluan. Kali ini saya ingin berbagi hal yang saya dapat setelah mempelajari laravel dan berkeliling dari situs ke situs. yaitu bagaimana merubah folder publik pada laravel (saya menggunakan laravel v5.8). Sebagai Catatan umumnya setiap webserver selalu mencari & membaca terlebih dahulu file index pada publik direktori (folder) pada website. dan pada laravel terletak pada folder public.  Berikut Contoh struktur folder pada laravel : / /app /bootstrap /config /database /public     /index.php /resources /routes /storage Namaun pada saat kita akan mengupload / deploy website kita ke server Hosting yang pada umumnya menggunakan nama folder public_html . tentu suatu hal yang mungkin membuat kita sedikit bingung untuk merubah nama folder dari project kita ka...

Struktur dasar penuliasan tag HTML

Dalam membangun sebuah website ada hal hal yang perlu kamu pelajari dan mengerti. salah satunya penyusunan script atau tulisan kode penyusun halaman website kamu HTML ( Hyper Text Markup Language ) merupakan bahasa markah yang menyusun sebuah halaman website. Penulisan bahasa HTML diapit dengan tag < ... >  . Contohnya :  < H1 > ( kontent atau teks ) </H1>