Untuk melakukan edit ataupun update memperbaharui suatu data di laravel, kita perlu menentukan atau membuat parameter pada route yang kita definisikan.
Parameter tersebut dapat berupa index atau ID yang akan mengambil data dari suatu model. Mari kita lihat contoh dan penggunaannya.
Ini merupakan lanjutkan dari tutorial yang sudah dibuat sebelumnya. Jika tidak mengikuti tutorial sebelumnya dan ingin melihat cara penginstalan, konfigurasi awal dan pembuatan model, route, dan controller silahkan buka link dibawah, karena akan dilewati dan tidak ditulis ulang.
Sebelumnya: Belajar Laravel Pemula: Cara Menyimpan Data ke Database MySQL.
Membuat GET
Route
Kita buat route baru dengan method GET
dan menambahakan parameter untuk mengambil suatu data yang akan diperbaharui.
Buka web.php
dan tambahkan route seperti dibawah ini.
Route::get('/post/edit/{id}', [PostController::class, 'edit']);
Membuat Method di Controller
Selanjutnya buat method baru di controller dengan nama yang sama di panggilan route dan dengan menambahakan parameter, seperti dibawah ini.
//PostController.php public function edit($id) { $post = Post::findOrFail($id); return response()->json($post, 200); }
Kita membuat permintaan ke Model untuk menampilkan data sesuai parameter, yaitu ID dari Post. Kita akan coba membuat request melalui Postman dengan membuat response berupa json.
Jalankan php artisan serve
kemudian buka postman dan buat request seperti gambar dibwawah ini.
Kita buat request untuk menampilkan data record menggunakan method GET
dan url http://localhost:8000/post/edit/1 lalu kirim
. Angka 1
pada url merupakan ID dari data record yang ada di database.
Kita membuat request mengambil data post ini adalah untuk menampilkan value yang ada pada form input yang akan kita buat.
Membuat Html Form Edit
Mari kita lanjutkan dengan membuat sebuah halaman untuk form edit. Kita buat file baru pada direktori views dengan nama edit.blade.php
dan copas html form dan input dibawah ini.
//views/post/edit.blade.php @extends('layouts.app') @section('title', 'Post Edit') @section('content') <form method="POST" action="{{ url('post/update', $post->id ) }}"> @csrf <input name="title" value="{{ $post->title }}" type="text" placeholder="Title..."> <input name="body" value="{{ $post->body }}" type="text" placeholder="Body..."> <button>Submit</button> </form> @endsection
Pada form diatas, kita gunakan method POST
dan action ke URI post/update
dengan menambahkan parameter berupa ID. Kemudian pada elemen input kita definisikan properti atau field dari tabel di database degan atribut name
dan menampilkan value yang ada / old value dengan atribut value
.
Setelah html form dibuat, kita akan buka pada browser. Namun sebelum itu kita buka terlebih dahulu PostController.php
untuk merubah response yang ada pada method edit()
dengan mengalihkan ke view halaman edit, seperti dibawah ini.
public function edit($id) { $post = Post::findOrFail($id); return view('post.edit', [ 'post' = $post ]); }
Setelah diubah, kita bisa lihat pada browser dengan membuka http://localhost:8000/post/edit/1
; yang hasilnya seperti gambar berikut.
Membuat Update Route
Selanjutnya kita buat route baru sesuai yang kita tambahkan pada form action diatas. Kita buka kembali web.php
lalu tambahkan route di bawah ini.
Route::post('/post/update/{id}', [PostController::class, 'update']);
Tambahkan Method di Controller
Kemudian kita buat method update()
di controller seperti dibawah ini.
public function update(Request $request, $id) { $post = Post::find($id)->update($request->all()); return back()->with('success',' Data telah diperbaharui!'); }
Setelah melakukan submit, kita buat untuk kembali ke halaman yang ada dengan memberikan pesan. Untuk menampilkan pesan tersebut, kita perlu menambahakan pesan sesi pada halaman edit.
Silahkan buka edit.blade.php
dan tambahkan dibawah ini.
@section('content') @if ($message = Session::get('success')) <p>{{ $message }}</p> @endif ... @endsection
Sampai disini silahkan mencobanya. Hasilnya akan seperti gambar dibawah ini.
Kita juga bisa mengalihan ke halaman lain atau url lain setelah submit dengan membuat redirect response seperti dibawah ini.
return redirect('/'); return redirect()->route('home');
Selesai
Kita telah melihat bagimana cara melakukan edit data di laravel, html form yang dibuat diatas hanya sekedar contoh tanpa penambahan css / style. Jika ingin menambahkan style atau ingin menggunakan css framework bootstap, silahkan buka Cara Install Bootstrap di Laravel 8 untuk cara penginstalan dan penggunaan.
Silahkan dicoba.