CRUD Yii2 – Membuat Buku Telepon – Step 6 (Delete Data)

Telah sampai kita ke tahap menghapus data. Tidak seperti langkah-langkah sebelumnya, yang hanya membuat 1 method/fungsi sebagai action, tapi pada tahap ini selain kita membuat fungsi actionDelete kita juga akan menambahkan method behaviors yang berfungsi untuk mengontrol akses dari action Delete. Dan pada tahapan ini juga kita akan memodifikasi views dari index.php dengan mamasukan tombol-tombol atau link yang akan menyambungkan ke action-action yang telah kita buat seperti actionUpdate.

Langsung saja kita menuju ke source code untuk controllernya, silahkan kamu buka PhoneBookController.php yang ada di folder controllers, kemudian masukan code untuk deletenya

public function actionDelete($id) {
        $model = \app\models\PhoneBook::findOne($id);
        if ($model == null) {
            throw new NotFoundHttpException("Data tidak ditemukan");
        }

        if ($model->delete()) {
            return $this->redirect(['index']);
        }
    }

Dan juga memasukan code untuk behaviors nya,

public function behaviors() {
    return [
        'verbs' => [
            'class' => \yii\filters\VerbFilter::className(),
            'actions' => [
                'delete' => ['POST'],
            ],
        ],
    ];
}

Kenapa hal ini dibutuhkan? Ini dibutuhkan supaya action Delete hanya bisa diakses menggunakan method post.

Setelah itu dibuat, mari kita melakukan pembaruan terhadap file index.php yang terdapat pada folder views/phone-book. Mari kita sisipkan code untuk membuat link-link yang berguna untuk menyambungkan ke action-action tadi.

<?php

use yii\helpers\Html;
use yii\grid\GridView;

/* @var $this yii\web\View */
/* @var $dataProvider yii\data\ActiveDataProvider */

$this->title = 'Phone Books';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="phone-book-index">

    <h1><?= Html::encode($this->title) ?></h1>
    <p>
        <?= Html::a('Create Phone Book', ['create'], ['class' => 'btn btn-success']) ?>
    </p>

    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],

            'id',
            'name',
            'phone',
            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]); ?>
</div>

Pada code view diatas, telah kita sisipkan untuk membuat link-link. Yaitu terdapat pada code

['class' => 'yii\grid\ActionColumn'],

Coba sekarang kamu buka http://localhost:8080/phone-book/index nah pada kolom terakhir sekarang sudah terdapat 3 tombol aksi.

 

Nah sekarang untuk bagian yang terakhir, yaitu menampilkan data single row / menampilkan data sesuai yang dipilih, adalah tugas untuk kamu semua silahkan jika sudah bisa mengerjakan bisa share snippet codemu di komentar.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.