CRUD Yii2 – Membuat Buku Telepon – Step 3 (Create Data)

Kita telah sampai ke tahap yang ke 3 yaitu melakukan insert atau membuat data (Create). Pada langkah-langkah sebelumnya kita telah membuat Migrasi dan juga Model terhadap tabel phone_book. Langkah ke 3 ini kita memerlukan 2 file, yang 1 sebagai controller dan yang 1 lagi digunakan sebagai view (tampilan form).

Langsung saja kita membuat file pada folder controllers  dengan nama PhoneBookController.php dengan namespace app\controllers, ingat ketika kita membuat sebuah file controller kita harus menggunakan akhiran Controller

<?php

namespace app\controllers;

use Yii;
use yii\web\Controller;

class PhoneBookController extends Controller {

}

Ketika kamu membuat controller seperti diatas yaitu terdapat huruf besar di tengah (Book) maka kamu dapat memanggilnya lewat url dengan menambahkan dash (-) di depan kata Book, sehingga menjadi /phone-book

Selanjutnya kita akan menambahkan sebuah method/action bernama Create untuk pembuatan action harus diawali dengan nama action, jadi method yang akan kita buat adalah actionCreate

public function actionCreate(){
        $model = new \app\models\PhoneBook();

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            echo "Sukses";
            return;
        }

        return $this->render('create', [
            'model' => $model
        ]);
    }

Pada kode diatas ada beberapa bagian

$model = new \app\models\PhoneBook();

Mendeklarasikan variable $model sebagai model dari (app\models\PhoneBook)

if ($model->load(Yii::$app->request->post()) && $model->save()) {
            echo "Sukses";
            return;
        }

$model->load() adalah melakukan initialize data terhadap form yang di submit sedangkan $model->save() melakukan penyimpanan data ke tabel/database

return $this->render('create', [
            'model' => $model
        ]);

$this->render() digunakan untuk melakukan render dari file yang ada di folder view, dalam hal ini akan digunakan untuk merender form  (create.php)

Jadi secara lengkap code untuk controllers PhoneBookController.php adalah

<?php

namespace app\controllers;

use Yii;
use yii\web\Controller;

class PhoneBookController extends Controller {

    public function actionCreate(){
        $model = new \app\models\PhoneBook();

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            echo "Sukses";
            return;
        }

        return $this->render('create', [
            'model' => $model
        ]);
    }

}

Setelah pembuatan controller selesai, kita akan membuat sebuah view. Langsung saja kita buat di dalam folder views/phone-book (silahkan buat dulu jika folder phone-book tidak ada pada views) dengan nama create.php

<?php

use yii\helpers\Html;
use yii\widgets\ActiveForm;

/* @var $this yii\web\View */
/* @var $model app\models\PhoneBook */
/* @var $form ActiveForm */
$this->title = "Buat Data Baru";
?>
<h2><?=Html::encode($this->title)?></h2>
<?php $form = ActiveForm::begin(); ?>

<?= $form->field($model, 'name') ?>
<?= $form->field($model, 'phone') ?>

    <div class="form-group">
        <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
    </div>
<?php ActiveForm::end(); ?>

Pada Yii2 dalam pembuatan form kita bisa menggunakan widget ActiveForm. Untuk variable $model itu didapat dari controller, pada bagian render terdapat ‘model’ => $model, nah inilah mengapa pada view kita bisa menggunakan variable $model tanpa error.

Setelah code view dibuat, langsung saja kita buka di browser dengan mengetikan alamat http://localhost:8080/phone-book/create dan jika keluar seperti gambar dibawah,

berarti anda telah menyelesaikan tutorial CREATE. Selanjutnya kamu test dengan mengisikan name dan phone kemudian disubmit, apabila terdapat kata sukses  itu artinya data sudah berhasil disimpan di database.

 

Pada Step 4 kita akan membahas tentang bagaimana cara menampilkan data dari database

Seberapa manfaat turorial ini?
Sending
User Review
0 (0 votes)
No Responses

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.