【问题标题】:Check if resource exists before rendering full page component on Livewire在 Livewire 上渲染整页组件之前检查资源是否存在
【发布时间】: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会在找不到时处理重定向

标签: laravel laravel-livewire


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-26
    • 2013-05-21
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 2011-07-15
    • 2010-10-09
    • 1970-01-01
    相关资源
    最近更新 更多