Tutorial Membuat CRUD di Adonis JS #4 : Edit dan Update Data ke Database


Fika Ridaul Maulayya
I'm Fika Ridaul Maulayya, a Full-Stack Web Developer, Content Creator and CO-Founder Santri Koding. I share everything i know with Article, Screencasts and E-Books at SantriKoding.com

Tutorial Membuat CRUD di Adonis JS #4 : Edit dan Update Data ke Database - Halo teman-teman semuanya, di artikel sebelumnya kita sudah membahas bagaimana cara memasukkan data atau input data ke database dengan Adonis JS.

Di artikel kali ini kita semua akan belajar bagaimana cara membuat edit dan update data dengan Adonis JS.

Langsung saja kita mulai, sekarang silahkan teman-teman buka file PostController.js dan tambahkan 2 fungsi berikut ini di dalam class PostController :

async edit({ request, response, view, params }) {
  const id    = params.id
  const post  = await Post.find(id)

  return view.render('posts.edit', { post: post })
}

async update({ request, response, view, params, session }) {
  const id    = params.id
  const post  = await Post.find(id)

  post.title    = request.input('title')
  post.content  = request.input('content')
  await post.save()

  session.flash({ notification: 'Data Berhasil Diupdate!' })
  return response.route('posts.index')
}

Jika kita perhatikan, kita sudah menambahkan 2 fungsi baru dengan nama edit dan update, fungsi edit kita gunakan untuk merender sebuah view dengan membawa sebuah data. Dan fungsi update kita gunakan untuk mengupdate data ke dalam database.

Jika file PostsController.js ditulis dengan lengkap, kurang lebih seperti berikut ini :

'use strict'

const Post = use('App/Models/Post')

class PostController {

  async index({ request, response, view }) {
    const posts = await Post.all()

    return view.render('posts.index', { posts: posts.rows })
  }

  create({ request, response, view }) {
    return view.render('posts.create')
  }

  async store({ request, response, view, session }) {
    const post = new Post()

    post.title    = request.input('title')
    post.content  = request.input('content')
    await post.save()

    session.flash({ notification: 'Data Berhasil Disimpan!' })
    return response.route('posts.index')

  }

  async edit({ request, response, view, params }) {
    const id    = params.id
    const post  = await Post.find(id)

    return view.render('posts.edit', { post: post })
  }

  async update({ request, response, view, params, session }) {
    const id    = params.id
    const post  = await Post.find(id)

    post.title    = request.input('title')
    post.content  = request.input('content')
    await post.save()

    session.flash({ notification: 'Data Berhasil Diupdate!' })
    return response.route('posts.index')
  }

}

module.exports = PostController

Setelah kita berhasil membuat 2 fungsi baru di controller, sekarang kita lanjutkan membuat sebuah view baru untuk menampilkan formn editnya.

Silahkan jalankan perintah dibawah ini untuk membuat view baru :

adonis make:view posts/edit

Perintah diatas, akan membuat sebuah file view baru dengan nama edit.edge di dalam folder resources/views/posts.

Silahkan buka file edit.edge dan masukkan kode dibawah ini :

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">

  <title>Data Posts</title>
</head>
<body>

<div class="container" style="margin-top: 80px">
  <div class="row">
    <div class="col-md-12">
      <div class="card">
        <div class="card-header">
          EDIT POSTS
        </div>
        <div class="card-body">
          <form action="{{ route('posts.update', { id: post.id }) }}" method="POST">
            {{ csrfField() }}
            <div class="form-group">
              <label>TITLE</label>
              <input class="form-control" type="text" name="title" value="{{ post.title }}" placeholder="Masukkan Judul Post">
            </div>
            <div class="form-group">
              <label>CONTENT</label>
              <textarea class="form-control" name="content" rows="5" placeholder="Masukkan Content Post">{{ post.content }}</textarea>
            </div>
            <div class="form-group">
              <button type="submit" class="btn btn-md btn-success">UPDATE</button>
            </div>
          </form>
        </div>
      </div>
    </div>
  </div>
</div>

<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</body>
</html>

Terakhir, sekarang kita akan menambahkan route baru, silahkan buka file routes.js di dalam folder start dan tambahkan kode berikut ini :

Route.get('/posts/edit/:id', 'PostController.edit').as(‘posts.edit')
Route.post('/posts/update/:id', 'PostController.update').as('posts.update')

Dan sekarang teman-teman bisa membuka project dan silahkan edit salah satu data, jika berhasil kurang lebih tampilannya seperti berikut ini :


Dan silahkan teman-teman mencoba mengupdate data, jika berhasil teman-teman akan melihat kurang lebih tampilannya seperti berikut ini :


Sampai disini pembahasan tentang edit dan update data ke dalam database dengan Adonis JS, di artikel selanjutnya kita semua akan belajar bagaimana cara delete data ke dalam database dengan Adonis JS.

Terima Kasih


Fika Ridaul Maulayya
I'm Fika Ridaul Maulayya, a Full-Stack Web Developer, Content Creator and CO-Founder Santri Koding. I share everything i know with Article, Screencasts and E-Books at SantriKoding.com
KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami

KOMENTAR