使用如下示例中的自定义域并没有告诉Livewire请求在此示例中使用相同的子域subdomain1
作为前缀:
Route::domain('subdomain1.'.env('APP_DOMAIN', 'localhost'))
->middleware(['web',.....])
->as('app.')
->group(base_path('routes/app.php'));
问题是,默认回调的Livewire取端点是/livewire/message/{message}
不幸的是只使用根域,而不是基于它被调用的地方。在我的情况下,从subdomain1
和你可以猜到这意味着会议包的不同存储。首先,这是一个不同的会话。
所以存储子域的会话与存储会话本身是不一样的。尽管如此,为了封装基于每个子域的Livewire使用,我还需要其他自定义,如果我有一个基于多租户的项目,并且我需要这样的隔离。
经过一番谷歌搜索,并基于Livewire论坛的解决方案:
我将它定制为适合子域使用
- 步骤1,在
routes/app.php
中添加新路由:
use LivewireControllersHttpConnectionHandler;
// .....
// Notice that this root route has to be the same as the one in step2:
Route::get('/', [AppController::class, 'index'])->name('app.index');
// .....
Route::post('livewire/message/{name}', [HttpConnectionHandler::class, '__invoke']);
- Step2,在
@livewireScripts
之后的Blade:
@livewireScripts
<script>
window.livewire_app_url = '{{route('app.index')}}';
</script>
如果你想知道Livewire的配置,没有必要改变它。就让它顺其自然吧;null
:
'asset_url' => null,