Halo semuanya, pada pembelajaran kali ini kita akan mencoba melakukan update data di CodeIgniter 4. Pada pembelajaran sebelumnya kita sudah menginputkan beberapa data ke dalam database. Jadi kita akan merubah value atau isi dari database tersebut.
Disini kita akan menerapkan konsep MVC untuk melakukan update data di CodeIgniter 4. Jadi kita bisa mulai dari membuat method di Contoller Blog.
Kita buka terlebih dahulu file app/Controllers/Blog.php dan kita buat method edit()
lalu ditaruh dibagian paling bawah. Untuk detail codenya seperti berikut.
public function edit($id) { $data = [ 'title' => 'Edit a blog', 'blog' => $this->blogModel->find($id), ]; if ($this->request->getMethod() === 'post' && $this->validate([ 'blog_title' => 'required|min_length[3]|max_length[255]', 'blog_description' => 'required', ])) { $this->blogModel->update($id, [ 'blog_title' => $this->request->getPost('blog_title'), 'blog_description' => $this->request->getPost('blog_description'), ]); return redirect()->to('/blog/view/' . $id); } else { echo view('templates/header', $data); echo view('blogs/edit', $data); echo view('templates/footer'); } }
Berikut penjelasan code diatas :
- Pada code diatas kita akan menerima parameter untuk method
edit($id)
.$id
kita gunakan untuk mencari data blog yang akan kita ubah datanya.
- Selanjutnya kita lakukan pengecakan pada request method dan validasi data. Jika request methodnya bernilai
post
dan validasinya sudah benar maka kita lakukan update data berdasarkan nilai$id
yang diterima. Terakhir kita akan redirect ke dalam tampilan view langsung dengan mengirimkan parameter$id
- Jika request methid dan viladasinya salah maka kita akan kembalikan ke dalam tampilan edit data sesuai dengan data yang akan kita ubah nilainya.
Sekarang kita telah membuat method untuk melakukan update data di codeigniter 4. Selanjutnya kita akan membuat tampilan berupa form dengan menggunakan bootstrap.
Kurang lebihnya tampilan edit data akan sama seperti tampilan tambah data. Tetapi, kita akan memberikan value pada setiap inputan berdasarkan data sebelumnya.
Kita buat terlebih dahulu file di app/Views/blog/edit.php. Untuk detail codenya seperti berikut ini.
<div class="container"> <div class="col-lg-8"> <form action="/blog/edit/<?= $blog['blog_id'] ?>" method="post"> <?= csrf_field() ?> <h2><?= esc($title) ?></h2> <?= session()->getFlashdata('error') ?> <?= service('validation')->listErrors() ?> <div class="mb-3"> <label for="title" class="form-label">Title</label> <input type="text" name="blog_title" value="<?= $blog['blog_title'] ?>" class=" form-control" id="title"> </div> <div class="mb-3"> <label for="description" class="form-label">Description</label> <textarea class=" form-control" name="blog_description" cols="45" rows="4" id="description"><?= $blog['blog_description'] ?></textarea> </div> <button type="submit" class="btn btn-primary">Submit</button> <a href="/blog" class="btn btn-light">Back</a> </form> </div> </div>
Berikut penjelasan code diatas :
- Disini kita buat terlebih dahulu div dengan class
container
yang di dalamnya terdapat div dengan classcol-lg-8
. Di dalamnya lagi kita akan menambahkan form untuk melakukan inputan.
- Pada bagian form kita arahkan action ke
/blog/edit/<?= $blog['blog_id'] ?>
.<?= $blog['blog_id'] ?>
ini akan menampilkan id dari blog yang akan kita edit. Terakhir kita gunakan methodpost
.
- Di dalam form kita akan panggil perintah
csrf_field()
untuk mencegah csrf attack. Pada bagian bawahnya kita akan gunakan session untuk menangkap errror dan menampilkan pesan error.
- Terakhir pada setiap tag input kita tambahkan
value
yang diisi dengan nilai data yang kita dapatkan di dalam database.
Disini kita juga akan menambahkan button yang nantinya akan mengarah ke halaman edit. Kita buka file app/Views/blog/index.php lalu kita tambahkan button dengan mengirimkan id
dibagian url.
// before <div class="card-footer"> <a href="/blog/view/<?= $blog['blog_id'] ?>" class="btn btn-primary">View</a> </div> // after <div class="card-footer"> <a href="/blog/view/<?= $blog['blog_id'] ?>" class="btn btn-primary">View</a> <a href="/blog/edit/<?= $blog['blog_id'] ?>" class="btn btn-warning">Edit</a> </div>
Kita juga akan tambahkan dibagian tampilan single blog. Kita buka terlebih dahulu file app/Views/blogs/view.php lalu kita akan lakukan cara yang sama seperti diatas yaitu menambahkan button edit.
// before <div class="col-lg-8 col-md-6"> <h3 class="card-title"><?= esc($blog['blog_title']) ?></h3> <p class="card-text"><?= esc($blog['blog_description']) ?></p> <a href="/blog" class="btn btn-primary">Back</a> </div> // after <div class="col-lg-8 col-md-6"> <h3 class="card-title"><?= esc($blog['blog_title']) ?></h3> <p class="card-text"><?= esc($blog['blog_description']) ?></p> <a href="/blog" class="btn btn-primary">Back</a> <a href="/blog/edit/<?= $blog['blog_id'] ?>" class="btn btn-warning">Edit</a> </div>
Terakhir kita akan mendefinisikan routes untuk melakukan perubahan data. Kita buka terlebih dahulu app/Config/Routes.php dan cari bagian Route Definitions
, kita akan mendefinisikan routes di dalam sana. Seperti berikut ini.
$routes->match(['get', 'post'], 'blog/edit/(:num)', 'Blog::edit/$1');
Disini kita gunakan method get dan post agar kita bisa mengambil data serta mengirimkan data ke dalam Controller. Kita bisa mencoba langsung dengan url berikut http://localhost:8080/blog/edit/{id}. ubah id dengan id blog yang ingin diubah. Nantinya akan muncul tampilan seperti berikut.
Penutup
Kita telah berhasil melakukan update data di codeigniter 4. Untuk selanjutnya kita akan belajar cara hapus data di codeigniter 4. Kalian bisa melihat daftar belajar codeigniter 4 dibawah ini.
Kalian bisa explore lagi dari validation maupun tampilan formnya. Untuk baca lebih lengkap mengenai validation apa saja yang bisa kita gunakan, kalian bisa membaca langsung dokumentasi codeigniter 4 disini.