CRUD Yii2 – Membuat Buku Telepon – Step 5 (Update Data)

Langkah ini hampir sama seperti pada Step 3, pada langkah ini kamu sebenarnya bisa menggunakan view dari create.php untuk dijadikan form update data. Pada tutorial ini kita akan menggunakan view sendiri sebagai form, tapi di akhir nanti akan ada contoh penggunakan view create.php sebagai form untuk update.

Sama seperti create langkah ini membutuhkan 1 file baru sebagai view, dan tambahan method action pada controller nya. Langsung saja kita mulai dari controller.

Buka kembali file PhoneBookController.php kemudian tambahkan method actionUpdate dengan parameter $id

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

        if ($model->load(Yii::$app->request->post()) && $model->save()) {

            return $this->redirect(['index']);
        }

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

Sedikit berbeda dengan Create, pada Update terdapat baris

$model = \app\models\PhoneBook::findOne($id);

Dimana code diatas berfungsi untuk mengambil data berdasarkan primary Key

if($model == null){
            throw new NotFoundHttpException("Data tidak ditemukan");
        }

Berfungsi untuk melakukan Exception supaya proses code dibawahnya tidak dieksekusi ketika tidak ada data yang ditemukan.

Untuk bagian view, buatlah file dengan nama update.php pada folder phone-book dengan isi

<?php

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

/* @var $this yii\web\View */
/* @var $model app\models\PhoneBook */
/* @var $form ActiveForm */
$this->title = "Ubah Data";
?>
<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(); ?>

Nah mirip bukan dengan create.php hanya pada $this->title saja yang berbeda. Terus jika ingin menggunakan file create.php sebagai view nya, bagaimana cara membedakan antara data baru dengan data yang akan di update. Untuk membedakan apakah form itu digunakan untuk membuat data baru atau untuk mengupdate data, bisa menggunakan $model->isNewRecord atau $model->getIsNewRecord() fungsi ini akan mengembalikan nilai true jika $model sebagai data baru dan false jika $model adalah data yang akan diupdate, seperti contoh script create.php dibawah ini.

<?php

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

/* @var $this yii\web\View */
/* @var $model app\models\PhoneBook */
/* @var $form ActiveForm */
$this->title = $model->isNewRecord ? "Buat Data Baru" : "Perbarui Data";
?>
<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(); ?>

nah setelah code selesai, mari kita test dengan membuka http://localhost:8080/phone-book/update?id=1 jika muncul halaman seperti dibawah ini, maka kita telah sukses membuat update.

Untuk Selanjutnya yaitu Step 6 kita akan membahas masalah delete data.

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.