Belajar CodeIgniter 4 #7 : Insert Data ke Database

Setelah kita belajar menampilkan data pada Codeigniter 4, selanjutnya kita akan belajar cara menambahkan atau insert data di Codeigniter 4.

Pada pembahasan sebelumnya kita telah belajar cara insert data ke database menggunakan seed. Tetapi, untuk sekarang kita akan menerapkan konsep MVC dalam melakukan insert data.

Pertama kita akan membuat method create() seperti berikut. Untuk penjelasan detailnya ada dibawah.

public function create()
{
      $data = [
          'title' => 'Create a new blog',
      ];

      if ($this->request->getMethod() === 'post' && $this->validate([
          'blog_title' => 'required|min_length[3]|max_length[255]',
          'blog_description'  => 'required',
      ])) {
          $this->blogModel->save([
              'blog_title' => $this->request->getPost('blog_title'),
              'blog_description'  => $this->request->getPost('blog_description'),
            ]);

          return redirect()->to('/blog');
      } else {
          echo view('templates/header', $data);
          echo view('blogs/create', $data);
          echo view('templates/footer');
      }
}
  • Kita perlu membuat $data yang berisi title yang akan digunakan untuk title di bagian header.
  • Selanjutnya kita check request methodnya apakah sama dengan post dan kita juga melakukan validasi untuk data yang akan kita masukkan ke dalam database nanti.
  • Jika request method dan validasinya sudah benar maka kita akan menggunakan method save() untuk menyimpan data ke dalam database. Terakhir kita redirect ke dalam tampilan awal blog.
  • Jika salah maka akan menampilkan kembali halaman create

Kita telah berhasil membuat controller untuk insert data ke dalam database. Selanjutnya, kita perlu membuat tampilan form untuk inputan data.

Kita bisa buat terlebih dahulu folder dengan nama app/Views/blogs/create.php. Nantinya didalam folder tersebut berisi form yang akan kita buat dengan bantuan bootstrap.

Disini kita akan membuat form sederhana seperti berikut.

<div class="container">
  <div class="col-lg-8">
    <form action="/blog/create" 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" 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"></textarea>
      </div>
      <button type="submit" class="btn btn-primary">Submit</button>
      <a href="/blog" class="btn btn-light">Back</a>
    </form>
  </div>
</div>

Kita akan mengarahkan form action ke /blog/create dengan method post. Di dalamnya berisi crsf_field() untuk generate hidden input field untuk menghindari csrf attack.

selain itu, kita juga membuat session untuk nantinya menampilkan pesan error jika ada inputan yang tidak sesuai dengan validasi yang telah kita definisikan di controller.

Berikut tampilan form untuk menambahkan data blog baru.

insert data di codeigniter 4

Terakhir kita perlu mendefinisikan routes untuk method create pada controller blog. Caranya kita buka file app/Config/Routes.php. Cari Routes Definitions lalu kita definisikan routes seperti berikut.

$routes->post('blog/create', 'Blog::create');

Disini kita akan menggunakan method post untuk mengirimkan data dari views ke dalam controller dan terakhir kita simpan di dalam database melalui models. Di dalam method post berisi 2 parameter yaitu url dan method.

Penutup

Pada pembelajaran kali ini kita telah belajar cara insert data di codeigniter 4. 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.

Scroll to Top