问题标签 [laravel-formrequest]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 对 edit() VIEW 和 update() 方法重用 FormRequest authorize()
根据 Laravel 8 的文档,我可以创建自定义 FormRequests 并将我的验证/授权逻辑放在那里。这适用于 和 之类的store
路线update
。但在真正到达路线之前,必须在update
路线上按保存edit
(编辑view
)。
所以对于edit
路线。(还)没有什么要验证的,因为这是用户将数据输入表单进行验证的地方(稍后)。但是为了决定用户是否可以访问表单 edit
,我可以重用authorize()
表单中方法的相同逻辑。
那么如何重用authorize()
自定义的位FormRequest
呢edit
view
route
?
或者没有办法做到这一点,我必须重写/复制下面的行吗?
return $this->user()->can('update', $this->comment);
laravel - Laravel 表单请求 passValidation() 和 $request->validated()
我正在尝试在验证后使用passedValidation() 函数在formRequest 中实现强制转换方法。
一切看起来都不错,但是在passedValidation() 中的演员表并没有出现在$request->validated() 中,但是在$request->all() 中是可见的。
我的表格请求
$request->all() 验证前
$request->validated() 验证后
$request->all() 验证后
我们在 $request->all() 中看到验证后在 'phone_field' 上很好地执行了强制转换,但为什么它没有出现在 $request->validated() 中?
谢谢。
mysql - 如何在使用 laravel 表单请求更新数据时验证电子邮件的唯一性?
我正在使用表单请求将数据验证为更新方法。我正在尝试将电子邮件验证为唯一值,期望像这样请求用户电子邮件
但它不起作用,如何将请求的用户 ID 访问到表单请求中?
php - 如何在 Laravel 中使用 FormRequests 进行验证之前检查资源是否存在
我环顾四周,但在使用 Laravel 8 FormRequest 类验证传入请求之前,我无法找到一种方法来执行资源的存在性检查。
基本上,例如,当 PUT/PATCH 请求用于更新资源时,我想执行以下步骤:
- 检查请求的资源是否存在
- 检查用户是否有权进行更新
- 验证请求的字段
- 更新资源
- 将响应发送回用户
根据我的阅读,在 FormRequest 中执行第 2 步和第 3 步很容易,而第 4 步和第 5 步可以在控制器中完成(或在服务中执行 4 步,在控制器中执行 5 步)。
我缺少的是如何在一开始就执行第 1 步。我已经看到了一些解决方法,例如How to throw a 404 in Laravel Form Request with custom Rule可能与How to validate Route Parameters in Laravel 5? 但我觉得这不是实现我想做的事情的正确方法......
通过 Controller 中的存在性检查,用户首先可以发出有效请求,即使他试图更新不存在的资源(因为框架在调用 Controller 方法之前抛出 ValidationException)并且不会听起来不错。
关于如何在存在检查后“延迟”验证的任何建议可以实现?否则,我应该完全放弃使用 FormRequests 吗?
提前致谢!
laravel - 为什么 Laravel `FormRequest` 先授权,最后验证输入?我该如何改变这种行为?可能会出现哪些意想不到的弊端?
我使用自定义请求类来扩展 Laravavel FormRequest
(用户指南,API 文档)的顺序
- 验证输入参数,以及
- 授权请求。
骨架看起来像这样:
通常,特别是在我的情况下,用户是否有权发出请求的决定取决于输入参数。因此,我希望先验证输入参数的语法,然后再授权请求。特别是,为了获得适当的授权,经常需要使用请求的输入参数运行 DB 查询。显然,只有在输入参数的语法已经过验证的情况下,才应该执行 DB 查询。
话虽如此,我本来期望以下事件顺序
- 用户身份验证(发生在中间件中,此处超出范围)
- 输入参数的验证(例如方法
rules
被调用) - 用户授权(例如方法
authorize
被调用)
但是,Laravel 以相反的顺序调用 2. 和 3.。因此,用户必须在输入还没有被验证的时候被授权。有问题的代码似乎在\Illuminate\Validation\ValidatesWhenResolvedTrait::validateResolved
. 该方法首先调用授权逻辑,然后调用输入验证。
建议的解决方案
现在,我考虑编写自己的基类,从覆盖中FormRequestWithBugfix
扩展它,以便它调用它更好地排序的方法,然后在整个项目中用作公共基类。FormRequest
validateResolved
FormRequestWithBugfix
问题:
- 建议的解决方案会奏效吗?是否有任何我应该注意的极端案例没有被提议的解决方案解决?
- Laravel 在第一步中以这种方式实现的原因是什么?我认为应该有充分的理由像 Laravel 那样做。
- 我应该注意哪些安全隐患?如果订单发生变化,潜在的缺点是什么?
laravel - 如何验证laravel中的对象数组?
我有一组具有不同动态参数的对象。我正在尝试找到一种基于对象类型值来验证它的方法。有什么办法可以使用 FormRequest 吗?
validation - L8 - API - 可选输入 JSON 对象的表单请求
我正在处理表单请求,我有一个关于如何将它与可选输入对象一起使用的问题。
我的 API 得到一个简单的输入 JSON,例如:
控制器:
For 请求验证类:
该color
对象可以是输入 JSON 中的可选对象;我如何设置StoreUserRequest.php
类以color
仅在存在时才验证对象?
非常感谢!
validation - L8 - 从另一个 FormRequest 发出 FormRequest 失败
我有一个像这样的简单代码(更多或更少)。
路线:
控制器:
表格要求:
当我调用路由car-italian
时,它失败并显示消息:
有人能帮我吗?我花了一整天的时间:-/
谢谢
laravel - 如何使用 UUID 验证唯一密钥?
我有验证类,我试图确保代码列基于 UUID 是唯一的。
路线
尝试创建新项目时,我收到以下消息。
“消息”:“SQLSTATE [22P02]:无效的文本表示:7 错误:uuid 类型的输入语法无效:”(SQL:从“common_projects”中选择计数(*)作为聚合,其中“代码”= 测试和“uuid” <> )", "异常": "Illuminate\Database\QueryException",
我正在使用 Postgres 数据库。
php - Laravel 8.65 验证错误消息和旧值未显示在 Blade 文件中
我正在使用 FormRequest 来验证数据。我知道这个问题被问过很多次,社区试图通过多种方式解决这个问题,但没有一个能解决我的问题。附上参考链接。
我的问题描述
我很复杂,它的一些 HTML 是从我的 JQuery 代码生成的。当 Jquery 代码未填充到表单上时,后端验证和旧值工作正常,但当 JQuery HTML 出现在表单中并提交表单时,旧值和验证错误不起作用。附上图片以获得更多解释。
第 3 步在从 JQuery 填充的付款百分比输入字段中添加值。
表单请求
网页.php
刀
到目前为止我尝试过的
社区链接
- Laravel 验证 MessageBag 包含错误但未显示在刀片文件中
- Laravel 5 验证错误消息未显示
- Laravel 8 - 旧输入和验证错误消息不起作用
- https://github.com/laravel/framework/issues/26367
- https://laravel.io/forum/why-laravel-validation-dont-displaying-errors
- https://laracasts.com/discuss/channels/laravel/error-messages-are-not-shown-after-validation
- Laravel 5.2 验证错误未出现
社区建议的控制器代码