Postingan lainnya
Unable to call component method di Laravel Livewire
Saya menghadapi error Unable to call component method. Public method [gotoPage] not found on component
ketika berpindah halaman.
Sudah mencari & membaca beberapa artikel terkait tetapi belum menemukan solusinya.
2 Jawaban:
- Pastikan method yang dipanggil sudah dideklarasikan sebagai public di dalam component class. Contoh:
public function gotoPage() {
// code
}
-
Cek kembali penulisan nama method di tag action. Pastikan sesuai dengan deklarasi di class.
-
Hapus cache config dan route agar perubahan terdeteksi:
php artisan config:cache
php artisan route:cache
- Gunakan livewire:load-parameters untuk mengirim parameter ke method:
<button wire:click="gotoPage({{ $page }})">
- Gunakan livewire:mount untuk memanggil method saat component dimuat:
<livewire:componentName
livewire:mount="gotoPage">
- Gunakan emit dan listen untuk berpindah halaman:
$this->emit('gotoPage');
public function gotoPage() {
//
}
Apabila masih error, coba deklarasikan method di dalam __construct()
Tanggapan
error muncul ketika saya menggunakan pagination. Jika pagination menggunakan $data->links()
, properti wire:click wire:click="gotoPage({{ $page }})"
ditaruh dimana ya soalnya kan pagiantion engga di wrap tag apapun
Jawaban Terpilih
SOLVED!
Setelah saya amati lagi, ternyata si Livewire ini mendeteksi class index otomatis tanpa deklarasi class Index
di route file (web.php
), sebelumnya kode saya seperti ini:
Route::get('/jabatan', App\Livewire\MasterData\Jabatan\Index::class)->name('jabatan.index');
dan file Livewire saya juga bernama Index.php
Setelah itu saya ubah menjadi seperti berikut:
Route::get('/jabatan', App\Livewire\MasterData\Jabatan\Jabatan::class)->name('jabatan.index');
yang merubah (rename) file Livewire juga yang sebelumnya Index.php
menjadi Jabatan.php