Laravel: Menjalankan Livewire Tanpa php artisan serve
Cara membuat Laravel Livewire 3 berjalan dengan normal tanpa perintah php artisan serve
Masalah
Aplikasi Laravel yang menggunakan Livewire 3 bisa berjalan dengan normal jika menggunakan perintah php artisan serve
Tapi jika dijalankan di XAMPP misalnya dan diakses dengan URL localhost/nama_project/public
Livewire nya tidak jalan
Hal ini terjadi karena Livewire load asset nya langsung dari root project /livewire/livewire.js
dan karena URL nya ada tambahan /public
maka asset nya tidak ditemukan
Solusi
Dari dokumentasinya sudah dijelaskan juga
app/Providers/AppServiceProvider.php
use Livewire\Livewire;
use Illuminate\Support\Facades\Route;
// ...
public function boot(): void
{
Livewire::setScriptRoute(function ($handle) {
return Route::get('/nama_project/public/livewire/livewire.js', $handle);
});
Livewire::setUpdateRoute(function ($handle) {
return Route::post('/nama_project/public/livewire/update', $handle);
});
}
nama_project
merupakan folder yang digunakan di htdocs XAMPP nya
Cara ini bisa digunakan juga agar aplikasi Laravel yang menggunakan Livewire 3 bisa jalan di XAMPP seperti aplikasi PHP lainnya (simpan folder Laravel di htdocs dan dijalankan dengan mengakses localhost/nama_project/public
) atau di shared hosting dengan resource terbatas