laravel 在Livewire上呈现整页组件之前检查资源是否存在

s5a0g9ez  于 2022-12-14  发布在  其他
关注(0)|答案(2)|浏览(99)

如何在使用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组件。

mefy6pfw

mefy6pfw1#

正如Qirel所说,我认为$this->profile确实存在空值,所以也许您可以尝试在mount方法中使用findOrFail:

$this->profile = Profile::findOrFail($id);
piwo6bdm

piwo6bdm2#

试试这个:

if(!$this->profile) {
        abort(404);
    }

或者,您可以使用以下命令:

abort_if(!$this->profile, 404);

相关问题