使用 Laravel 框架時在一個網域建立多個 Laravel 網站時 Livewire 的 js 檔案路徑必需自訂,不然會出現 js 動作沒有反應問題,舉例在同一個網域建立複數 Laravel 網站:

https://abc.xyz.com/website01
https://abc.xyz.com/website02

分別放在網域下兩個資料夾,Livewire 預設 livewire.js 檔案路徑為 https://abc.xyz.com/livewire.js,但在網域 https://abc.xyz.com/ 下並不會有 livewire.js 檔案,使用 js 動作如 AJAX 資料請求時,post 的 js 檔案路徑也是 https://abc.xyz.com/livewire.js,不會是 https://abc.xyz.com/website01/livewire.js,這時就必須要自定路徑。

Livewire 官網有提到的自訂方法:

PHP
//自訂更新路徑
Livewire::setUpdateRoute(function ($handle) {
    return Route::post('/website01/livewire/update', $handle);
});

//自訂路徑
Livewire::setScriptRoute(function ($handle) {
    return Route::get('/website01/livewire/livewire.js', $handle);
});

將上面兩段程式碼,添加到 \app\app\Providers\AppServiceProvider.php 檔案中:

PHP
use Illuminate\Support\Facades\Route;   
use Livewire\Livewire;


class AppServiceProvider extends ServiceProvider
{
public function boot(): void
    {
        Livewire::setUpdateRoute(function ($handle) {
            return Route::post('/website01/livewire/update', $handle);
        });

        Livewire::setScriptRoute(function ($handle) {
            return Route::get('/website01/livewire/livewire.js', $handle);
        });
    }
}

這樣設定後就可以將 Livewire 所載入的預設網址路徑變更。

HTML
//預設載入
<script src="/livewire/livewire.js" ...
HTML
//設定後變更
<script src="/website01/livewire/livewire.js" ...

我的使用情境差不多是這樣,所以要修改預設載入路徑,以上!掰掰。

最後修改日期: 2024 年 12 月 21 日

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。