使用 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" ...
我的使用情境差不多是這樣,所以要修改預設載入路徑,以上!掰掰。
留言