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 编辑?