问题标签 [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.

0 投票
2 回答
99 浏览

php - 对 edit() VIEW 和 update() 方法重用 FormRequest authorize()

根据 Laravel 8 的文档,我可以创建自定义 FormRequests 并将我的验证/授权逻辑放在那里。这适用于 和 之类的store路线update。但在真正到达路线之前,必须在update路线上按保存edit(编辑view)。

所以对于edit路线。(还)没有什么要验证的,因为这是用户将数据输入表单进行验证的地方(稍后)。但是为了决定用户是否可以访问表单 edit,我可以重用authorize()表单中方法的相同逻辑。

那么如何重用authorize()自定义的位FormRequestedit view route

或者没有办法做到这一点,我必须重写/复制下面的行吗?

return $this->user()->can('update', $this->comment);

0 投票
2 回答
337 浏览

laravel - Laravel 表单请求 passValidation() 和 $request->validated()

我正在尝试在验证后使用passedValidation() 函数在formRequest 中实现强制转换方法。

一切看起来都不错,但是在passedValidation() 中的演员表并没有出现在$request->validated() 中,但是在$request->all() 中是可见的。

我的表格请求

$request->all() 验证前

$request->validated() 验证后

$request->all() 验证后

我们在 $request->all() 中看到验证后在 'phone_field' 上很好地执行了强制转换,但为什么它没有出现在 $request->validated() 中?

谢谢。

0 投票
1 回答
32 浏览

mysql - 如何在使用 laravel 表单请求更新数据时验证电子邮件的唯一性?

我正在使用表单请求将数据验证为更新方法。我正在尝试将电子邮件验证为唯一值,期望像这样请求用户电子邮件

但它不起作用,如何将请求的用户 ID 访问到表单请求中?

0 投票
2 回答
72 浏览

php - 如何在 Laravel 中使用 FormRequests 进行验证之前检查资源是否存在

我环顾四周,但在使用 Laravel 8 FormRequest 类验证传入请求之前,我无法找到一种方法来执行资源的存在性检查。

基本上,例如,当 PUT/PATCH 请求用于更新资源时,我想执行以下步骤:

  1. 检查请求的资源是否存在
  2. 检查用户是否有权进行更新
  3. 验证请求的字段
  4. 更新资源
  5. 将响应发送回用户

根据我的阅读,在 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 吗?

提前致谢!

0 投票
0 回答
18 浏览

laravel - 为什么 Laravel `FormRequest` 先授权,最后验证输入?我该如何改变这种行为?可能会出现哪些意想不到的弊端?

我使用自定义请求类来扩展 Laravavel FormRequest用户指南API 文档)的顺序

  1. 验证输入参数,以及
  2. 授权请求。

骨架看起来像这样:

通常,特别是在我的情况下,用户是否有权发出请求的决定取决于输入参数。因此,我希望先验证输入参数的语法,然后再授权请求。特别是,为了获得适当的授权,经常需要使用请求的输入参数运行 DB 查询。显然,只有在输入参数的语法已经过验证的情况下,才应该执行 DB 查询。

话虽如此,我本来期望以下事件顺序

  1. 用户身份验证(发生在中间件中,此处超出范围)
  2. 输入参数的验证(例如方法rules被调用)
  3. 用户授权(例如方法authorize被调用)

但是,Laravel 以相反的顺序调用 2. 和 3.。因此,用户必须在输入还没有被验证的时候被授权。有问题的代码似乎在\Illuminate\Validation\ValidatesWhenResolvedTrait::validateResolved. 该方法首先调用授权逻辑,然后调用输入验证。

建议的解决方案

现在,我考虑编写自己的基类,从覆盖中FormRequestWithBugfix扩展它,以便它调用它更好地排序的方法,然后在整个项目中用作公共基类。FormRequestvalidateResolvedFormRequestWithBugfix

问题

  1. 建议的解决方案会奏效吗?是否有任何我应该注意的极端案例没有被提议的解决方案解决?
  2. Laravel 在第一步中以这种方式实现的原因是什么?我认为应该有充分的理由像 Laravel 那样做。
  3. 我应该注意哪些安全隐患?如果订单发生变化,潜在的缺点是什么?
0 投票
0 回答
129 浏览

laravel - 如何验证laravel中的对象数组?

我有一组具有不同动态参数的对象。我正在尝试找到一种基于对象类型值来验证它的方法。有什么办法可以使用 FormRequest 吗?

0 投票
1 回答
11 浏览

validation - L8 - API - 可选输入 JSON 对象的表单请求

我正在处理表单请求,我有一个关于如何将它与可选输入对象一起使用的问题。

我的 API 得到一个简单的输入 JSON,例如:

控制器:

For 请求验证类:

color对象可以是输入 JSON 中的可选对象;我如何设置StoreUserRequest.php类以color仅在存在时才验证对象?

非常感谢!

0 投票
1 回答
12 浏览

validation - L8 - 从另一个 FormRequest 发出 FormRequest 失败

我有一个像这样的简单代码(更多或更少)。

路线:

控制器:

表格要求:

当我调用路由car-italian时,它失败并显示消息:

有人能帮我吗?我花了一整天的时间:-/

谢谢

0 投票
0 回答
54 浏览

laravel - 如何使用 UUID 验证唯一密钥?

我有验证类,我试图确保代码列基于 UUID 是唯一的。

路线

尝试创建新项目时,我收到以下消息。

“消息”:“SQLSTATE [22P02]:无效的文本表示:7 错误:uuid 类型的输入语法无效:”(SQL:从“common_projects”中选择计数(*)作为聚合,其中“代码”= 测试和“uuid” <> )", "异常": "Illuminate\Database\QueryException",

我正在使用 Postgres 数据库。

0 投票
1 回答
289 浏览

php - Laravel 8.65 验证错误消息和旧值未显示在 Blade 文件中

我正在使用 FormRequest 来验证数据。我知道这个问题被问过很多次,社区试图通过多种方式解决这个问题,但没有一个能解决我的问题。附上参考链接。

我的问题描述

我很复杂,它的一些 HTML 是从我的 JQuery 代码生成的。当 Jquery 代码未填充到表单上时,后端验证和旧值工作正常,但当 JQuery HTML 出现在表单中并提交表单时,旧值和验证错误不起作用。附上图片以获得更多解释。

步骤 1点击付款条件 步骤1

步骤 2选择条款并确认 第2步

第 3 步在从 JQuery 填充的付款百分比输入字段中添加值。 第 3 步

表单请求

网页.php

到目前为止我尝试过的

社区链接

  1. Laravel 验证 MessageBag 包含错误但未显示在刀片​​文件中
  2. Laravel 5 验证错误消息未显示
  3. Laravel 8 - 旧输入和验证错误消息不起作用
  4. https://github.com/laravel/framework/issues/26367
  5. https://laravel.io/forum/why-laravel-validation-dont-displaying-errors
  6. https://laracasts.com/discuss/channels/laravel/error-messages-are-not-shown-after-validation
  7. Laravel 5.2 验证错误未出现

社区建议的控制器代码