【发布时间】:2021-02-13 11:46:34
【问题描述】:
如何在使用 Livewire 渲染整个页面组件之前检查资源是否存在?使用 Laravel 控制器非常简单。
我的路线:
Route::get('/profiles/{id}', \App\Http\Livewire\Profiles\Manage::class)->name('profiles.manage');
我是 Profiles\Manage 类,在渲染整个页面组件之前检查配置文件是否存在。
我正在使用组件中的 mount 函数安装配置文件数据,并尝试检查配置文件是否存在(并相应地重定向)。但是,重定向不起作用。
public function mount($id)
{
$this->profile = Profile::where(['user_id' => Auth::user()->id, 'id' => $id])->first();
if(!$this->profile) {
return redirect()->to('/404');
}
}
我也尝试在返回组件视图的 render() 方法中执行此操作,但该方法需要渲染 livewire 组件。
【问题讨论】:
-
只需使用模型路由绑定将模型直接传递到挂载,而不是仅传递 ID。然后你改用
findOrFail(),这样laravel会在找不到时处理重定向