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