CRUD Menggunakan Yii2

Sebelum membahas mengenai pembuatan CRUD (Create,Read,Update,Delete) menggunakan Yii2 pastikan terlebih dahulu anda sudah membaca

Cara Instalasi YII2


Pastikan Yii2 sudah terinstal dikomputer anda. pada tutorial ini database yang akan digunakan masih sama dengan yang sebelumnya yang ada pada meteri 

Cara Koneksi Database Menggunakan PDO


namun ada sedikit perubahan dan penambahan kolom pada tabel buku, untuk melakukan perubahan silahkan anda buka database yang sudah anda buat sebelumnya dengan menggunakan phpmyadmin, untuk mengaskes phpmyadmin anda harus menjalankan terlebih dahulu fitur mysql dan apache seperti gambar berikut :


jika sudah silahkan akses phpmyadmin dengan mengetik di url browser anda http://localhost/phpmyadmin kemudian pilih database perpustakaan kemudian klik tabel buku dan tekan menu struktur/structure untuk mengubah dan menambah kolom pada tabel tersebut.


sesuaikan kolom tabel anda seperti gambar diatas, kemudian tambahkan dua buah kolom kemudian tekan tombol kirim


tambahkan dua buah kolom yaitu created_at dan updated_at dengan tipe data integer kemudian simpan.

Konfigurasi Database Pada Yii Framework

agar aplikasi kita terhubung dengan database kita perlu melakukan konfigurasi, sebelum itu silahkan buka terlebih dahulu project anda menggunakan editor disini saya menggunakan Visual Studio Code sebagai editor, kemudian buka folder config kemudian kemudian buka file db.php dan sesuaikan seperti gambar berikut :


Membuat Model

Setelah itu buka folder model kemudian kita akan menambahkan sebuah file dengan nama Buku.php file tersebut digunakan untuk mendekalarasikan kolom-kolom yang ada pada tabel yang sudah kita buat.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
namespace app\models;

use yii\db\ActiveRecord;

class Buku extends ActiveRecord
{
    public static function tableName()
    {
        return 'buku';
    }

    public function rules()
    {
        return [
            [['kode_buku', 'judul', 'isbn'], 'required'],
            [['judul'], 'string'],
            [['pengarang'], 'string'],
            [['isbn'], 'string'],
            [['foto'], 'string'],
            [['created_at'], 'integer'],
            [['updated_at'], 'integer'],
        ];
    }
}

Membuat Controller

buatlah sebuah file folder controller berikan nama BukuController kemudian masukan kode sebagai berikut :


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php

namespace app\controllers;

use Yii;
use yii\web\Controller;
use app\models\Buku;

class BukuController extends Controller
{

    public function actionIndex()
    {


        $buku = Buku::find()->all();
        return $this->render('index', [
            'buku' => $buku,
        ]);
    }

    public function actionCreate()
    {
        $model = new Buku();
        if (Yii::$app->request->post()) {
            $model->load(Yii::$app->request->post());
            if ($model->save()) {
                Yii::$app->session->setFlash('success', 'Data berhasil disimpan');
            } else {
                Yii::$app->session->setFlash('error', 'Data gagal disimpan');
            }
            return $this->refresh();
        } else {
            return $this->render('create', [
                'model' => $model,
            ]);
        }
    }

    public function actionDelete($id)
    {
        $model = Buku::findOne($id);
        $model->delete();
        return $this->redirect(['index']);
    }

    public function actionUpdate($id)
    {
        $model = Buku::findOne($id);

        if (Yii::$app->request->post()) {
            $model->load(Yii::$app->request->post());
            if ($model->save()) {
                Yii::$app->session->setFlash('success', 'Data berhasil disimpan');
            } else {
                Yii::$app->session->setFlash('error', 'Data gagal disimpan');
            }
            return $this->refresh();
        } else {
            return $this->render('update', [
                'model' => $model,
            ]);
        }
    }
}

Membuat View

pada folder view kita akan membuat folder dan beberapa file adapun folder yang akan ditambahkan adalah folder buku pada folder tersebut akan berisi beberapa file yaitu :
  1. index.php, digunakan untuk menampilkan data
  2. create.php, digunakan untuk membuat form simpan data
  3. update.php digunakan untuk membuat form ubah data
  4. _form.php, digunakan untuk menampilkan kolom-kolom yang akan kita simpan atau ubah. jadi create.php dan update.php akan menmpung _form.php sehingga kita tidak perlu membuatnya secara berulang kali.

index.php


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
use yii\helpers\Html;
?>
<style>
    tr {
        text-align: center;
    }

    th {
        text-align: center;
    }
</style>
<h1>Daftar Buku Perpustakaan</h1>
<div class="container">
    <div class="row">
        <?= Html::a('Tambah Buku', ['create'], $options = ['class' => 'btn btn-primary pull-right']) ?>
    </div>
    <br />
    <h1>Tambah Data Buku</h1>
    <?php
    ?>
    <div class="row">
        <?php
        $i = 1;
        echo "<table class='table table-bordered table-striped'>";
        echo "<tr>";
        echo "<th>NO</th>";
        echo "<th>KODE BUKU</th>";
        echo "<th>JUDUL</th>";
        echo "<th>PENGARANG</th>";
        echo "<th>ISBN</th>";
        echo "<th colspan='2'>AKSI</th>";
        echo "</tr>";
        foreach ($buku as $bukus) {
            echo "<tr>";
            echo "<td>" . $i++ . "</td>";
            echo "<td>" . $bukus->kode_buku . "</td>";
            echo "<td>" . $bukus->judul . "</td>";
            echo "<td>" . $bukus->pengarang . "</td>";
            echo "<td>" . $bukus->isbn . "</td>";
            echo "<td>" .  Html::a('<i class="glyphicon glyphicon-pencil"></i>', ['buku/update', 'id' => $bukus->kode_buku]) . "</td>";
            echo "<td>" .  Html::a(
                '<i class="glyphicon glyphicon-trash"></i>',
                ['buku/delete', 'id' => $bukus->kode_buku],
                ['onclick' => 'return (confirm("Apakah data mau di hapus?")?true:false);']
            ) . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        ?>
    </div>
</div>

create.php


1
2
<h1>Tambah Data Buku</h1>
<?php echo $this->render('_form', ['model' => $model]); ?>

update.php

1
2
<h1>Edit Data Buku</h1>
<?php echo $this->render('_form', ['model' => $model]); ?>

_form.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
?>
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'kode_buku') ?>
<?= $form->field($model, 'judul') ?>
<?= $form->field($model, 'isbn') ?>
<?= $form->field($model, 'pengarang') ?>
<?= Html::submitButton('Simpan', ['class' => 'btn btn-primary']) ?>
<?php ActiveForm::end(); ?>

Sekarang silahkan akses aplikasi anda pada browser dengan url :

http://localhost/perpustakaan/index.php?r=buku/index

Selesai