Edit Data Hotel Laravel 11
Tambahkan tombol Edit dan Delete
pada file hotel-list.blade.php pada folder resource/view/livewire/hotels
Tambahkan tujuan a href seperti berikut
Buat Komponen Edit Hotel
cara membuat komponen edit dengan mengetikkan
php artisan make:livewire hotels.hotel-edit
lalu tekan enter, hasilnya akan muncul tampilan seperti berikut
Arahkan Routing
tambahkan routing di folder routes/web.php
Ubah file hotel-edit.blade.php
pada folder resources/views/livewire/hotels/hotel-edit.blade.php pada dasarnya isi halamannya sama dengan file hotel-create.blade.php, kita langsung copy paste saja dari fiel hote-create.blade.php. Kemudian ganti title sesuai halaman edit hotel.
Memasukkan isi data ke form edit
untuk menangkap id dari file yang di klik tombol edit, kita perlu menambahkan kode pada file app/Livewire/Hotels/HotelEdit.php dengan menambahkan
public function mount($id)
setelah id ditangkap, lalu konekkan dengan database dengan id yang sudah tertangkap dengan mengetikkan kode berikut
tambahkan library
use App\Models\Hotel;
public function mount($id){
$hotel = Hotel::find($id);
}
setelah itu, copy semua property/variabel dari HotelCreate.php ke diatas function mount
#[Validate('required',message:'Nama harus diisi')]
#[Validate('min:3',message:'Nama Minimal 3 Karakter')]
public $name;
public $phone;
public $email;
public $address;
public $stars;
public $check_in_time;
public $check_out_time;
sehingga kode program secara keseluruhan menjadi
kemudian tuliskan semua properties/variabel ke dalam function mount agar data muncul pada setiap form isian di edit hotel.
$hotel = Hotel::find($id);
$this->name = $hotel->name;
$this->phone = $hotel->phone;
$this->email = $hotel->email;
$this->address = $hotel->address;
$this->stars = $hotel->stars;
$this->check_in_time = $hotel->check_in_time;
$this->check_out_time = $hotel->check_out_time;
sehingga semua kode menjadi seperti berikut
Ubah form action file hotel-edit.blade.php
ubah bagian form action menjadi seperti ini
<form wire:submit.prevent='update'>
karena kita menggunakan update, berarti kita juga harus membuat public function update pada file HotelEdit.php
Modifikasi Class HotelEdit.php
pada file app/Livewire/Hotels/HotelEdit.php kita buat function update
public function update(){
$this->validate;
karena ada fungsi validasi kita juga harus tambahkan script ini, supaya validasinya berjalan
}
untuk update, kita juga harus dapatkan semua record (semua data) yang bisa diakses di function update, nah sementara id yang ditangkap hanya bisa dibaca pada function mount. maka dari itu kita buat public properties baru dengan nama public $hotel;
diluar function yang sudah dibuat. kemudian ubah bagian $hotel = Hotel::find($id);
menjadi $this->hotel = Hotel::find($id);
agar semua record hotel bisa disimpan di dalam public $hotel;
lalu pada bagian kode berikut juga harus kita tambahkan $this->
pada function mount
$this->name = $hotel->name;
$this->phone = $hotel->phone;
$this->email = $hotel->email;
$this->address = $hotel->address;
$this->stars = $hotel->stars;
$this->check_in_time = $hotel->check_in_time;
$this->check_out_time = $hotel->check_out_time;
sehingga kode akhir menjadi
$this->name = $this->hotel->name;
$this->phone = $this->hotel->phone;
$this->email = $this->hotel->email;
$this->address = $this->hotel->address;
$this->stars = $this->hotel->stars;
$this->check_in_time = $this->hotel->check_in_time;
$this->check_out_time = $this->hotel->check_out_time;
dan untuk menyimpan data yang telah diubah kita perlu menambahkan script pada function update berikut
$this->hotel->update();
sehingga kode function update secara keseluruhan menjadi seperti berikut
public function update(){
$this->validate();
$this->hotel->update($this->all());
(untuk menyimpan hasil editan)
return $this->redirect('/hotels',navigate:true);
(untuk meredirect jika data sudah tersimpan di database)
}