Laravel 6 Backpack 4.0:如何在 FormRequest 类中获取当前页面 ID,或者我可以在不使用 FormRequest 类的情况下获得吗?

Posted

技术标签:

【中文标题】Laravel 6 Backpack 4.0:如何在 FormRequest 类中获取当前页面 ID,或者我可以在不使用 FormRequest 类的情况下获得吗?【英文标题】:Laravel 6 Backpack 4.0: How to get the current page ID in FormRequest class or can I get by without using FormRequest classes? 【发布时间】:2020-07-23 10:21:20 【问题描述】:

在我的 UpdateUserRequest 类中,我有一个验证规则,需要使用页面 ID 将当前记录排除在验证之外。问题是,如何获取当前页面 ID?

public function rules()

    return [
        'first_name' => 'required|string|max:255',
        'last_name' => 'required|string|max:255',
        'email' => 'required|string|email|max:255|unique:users_admin,email,'. $page_id,
    ];

我知道如何在没有 FormRequest 类的情况下做到这一点,基本上只需在控制器中使用 update(Request $request, $id) 方法。

我尝试过这种基本方法,即在控制器中编写update(Request $request, $id) 方法并在其中执行验证。验证按预期工作,但另一个问题是页面在保存后没有在 Backpack 管理中正确重定向。

我实际上更喜欢这种基本方法(在控制器中使用 store()update() 方法),而不是必须有单独的 FormRequest 类来创建和更新验证。

谢谢。

【问题讨论】:

【参考方案1】:

我们可以通过以下简单的方法获取 id,我已经尝试过了,它对我有用。

public function rules()

    $page_id = $this->get('id') ?? request()->route('id');
    return [
        'first_name' => 'required|string|max:255',
        'last_name' => 'required|string|max:255',
        'email' => 'required|string|email|max:255|unique:users_admin,email,'. $page_id,
    ];

引用自下面提到的网址

https://github.com/Laravel-Backpack/PermissionManager/blob/master/src/app/Http/Requests/UserUpdateCrudRequest.php

【讨论】:

以上是关于Laravel 6 Backpack 4.0:如何在 FormRequest 类中获取当前页面 ID,或者我可以在不使用 FormRequest 类的情况下获得吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 MyAccountController [backpack-laravel] 中添加个人资料信息

Laravel 5.4 Backpack 无法删除项目,返回“403 Forbidden”错误

Laravel-Backpack:结合 hasMany 和 hasManyThrough 在列表中添加子句

是否有任何用于 Laravel 包的 Backpack 允许实时 AJAX CRUD 编辑?

Laravel Backpack - 在 PageTemplate 中上传多个

Laravel Backpack - 内联创建,未在数据库中添加关系