问题标签 [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 - Laravel CSV 导入 - 我可以使用请求验证吗?
我正在使用 Laravel 5.6 并为我的表单设置了表单请求验证,该表单提交单行,对其进行验证,然后添加到数据库中。这一切都很好。
对于多行的批量导入,我有一个 CSV 导入。CSV 被解析为一个数组,数组的每一行都包含与我的表单中提供的完全相同类型的数据。因此它可以使用相同的验证规则。
我有点迷失如何实际实现这一点;从 CSV 解析的数据在一个数组中,而不是表单验证请求正在寻找的请求对象。
有没有人有关于能够在不重复代码的情况下对表单和 CSV 使用我的表单验证的最佳方式的任何提示?
编辑
如果有人感兴趣,我的最终解决方案是不使用表单请求验证。在我的例子中,将验证规则和消息添加到控制器内的一些受保护函数中更容易。这意味着它们可以在需要它的每个控制器功能(存储、csvStore 等)中重复使用,而无需重复代码。在这种情况下,我不确定表单请求验证功能有什么优势。
然后,我使用成功/错误/重复计数来发回合适的错误消息包和/或闪存消息。
laravel - App\Http\Requests\UserUpdateRequest::user() 的声明应该与 Illuminate\Http\Request::user($guard = NULL) 兼容
我正在尝试支持并实现 FormRequest 对象以进行验证。我已经成功地为我的所有模型设置了表单请求,除了用户模型。我收到以下错误Declaration of App\Http\Requests\UserUpdateRequest::user() should be compatible with Illuminate\Http\Request::user($guard = NULL)
。研究此错误似乎是我通过策略处理授权的方式存在问题。请注意,UserStoreRequest有效,但UserUpdateRequest返回错误。
用户存储请求
用户更新请求
如您所见,我已经注释掉了 UpdateRequest 的大部分代码以进行故障排除。看来问题出在authorize()
方法上。下面是来自UserPolicy的代码
用户策略
用户控制器
我正在为此系统使用基于权限的授权。用户有hasPermission()
方法来验证用户是否具有执行操作所需的权限。我担心我对这个设置感到困惑并且我没有正确验证。在尝试在 User 模型上实现它之前,一切都已经完成。
有权限()
有角色()
更新
我尝试重命名UserUpdateRequest中的user()
方法来解决覆盖Request用户的任何问题。这清除了上面列出的错误,但随后未经授权返回响应。登录的用户具有允许更新用户的权限。这在使用的方法中调用。我只是不确定它是在检查登录用户还是模型用户。frank()
authorize()
Gate::allows
我进一步调查发现,将方法更改为frank()
. 我越来越Call to a member function update() on null
。我应该从 frank 方法返回从路由中提取的用户,但它似乎返回 null。
更新了 UserUpdateRequest
laravel - 使用 laravel 在 null 上调用成员函数 getClientOriginalName()
当我尝试上传图片时,我不断收到以下错误。有谁知道如何解决这个问题?我对下一步该做什么感到困惑。
在 null 上调用成员函数 getClientOriginalName()
https://flareapp.io/share/dmkydl73#F42
控制器
php - Laravel 5.8 403 此操作未经授权
我有这样的update
方法
和ContactPolicy
:
它工作正常,但是当我在我的方法中替换为时Contcact
向我显示:ContactRequest
update
403 此操作未经授权。
update
方法 :
authorize
ContactRequest 中的方法:
laravel - Laravel 6 - 在其他请求验证器中重用现有请求验证器的最佳方法
假设有两个 Laravel API 资源Book
和Author
,每个资源都有一些验证store
请求的规则。
然后,还有第三个 API 资源,API 使用者可以在其中发布特定内容以及 aBook
和 an Author
。也就是说,store
请求必须接受一个Book
对象、一个Author
对象和第三个FooBar
对象:
在FooBarRequest
验证中,重用andrules()
是有意义的,但它不起作用:BookRequest::rules()
AuthorRequest::rules()
也许使用 Laravel 的自定义规则,但它并没有太大帮助,因为该passes
方法必须返回一个布尔值(即我们应该为每个属性重新编写所有验证逻辑)。
有没有优雅/官方的方式来做到这一点?
laravel - 使用表单请求在 Laravel 中创建新的“属于”关系
我是 Laravel 的新手,不能完全理解表单请求以及如何使用它们。在简单的情况下,这很简单,但我需要的是在处理其余请求之前有条件地创建相关模型。让我解释。
现在在我的 Create Job 界面中,我有一个Select2
组合框,用于AJAX
搜索 2 个不同的来源并可以产生 3 个不同的结果。
所以,假设我正在创建新工作,并且可以有一个看起来像以下任何一个的 POST:
脚本找到了一个 id 为 21 的客户端,我们只想保存,一切都很简单
或者
脚本没有找到客户端,但我们搜索了外部 API 并返回了这个标识符,然后我可以对其进行解析以创建一个新的客户端。这需要在我保存作业之前完成,因为我需要为它准备好一个 client_id
或者
脚本既找不到本地客户端也找不到远程数据点,因此我们想仅使用提供的名称创建一个新客户端。当然,这必须在保存作业之前发生
我在哪里执行所有这些功能?
$data['client_id'] = Client::HandleClientAndReturnId($data['client_id'])
我的第一个程序猜测是在StoreJob's
validationData()
返回结果之前坚持下去。
但是我将如何处理/报告与创建新客户端以及如何管理事务可能的验证问题 - 如果作业验证失败,我不想创建客户端。
我正在使用表单请求,实际上已经在解析请求中的几个模型,但这些是HAS_ONE
关系类型,所以我在作业之后创建它们。在这里,我需要扭转这个过程。这是我的控制器中的内容,如果有任何用处:
以下是我的关系:
我有一种感觉,我错过了正确的方法,但不太确定在哪里寻找答案,所以请指出正确的方向。
澄清:
整个练习的目标是允许用户使用一个组合框创建新客户或选择现有客户。这是一个 Select2 框。对于不熟悉的 - 一个下拉替换,它能够自由键入用于搜索现有记录的字符串,如果没有找到,它会将用户输入的内容发送到服务器。类似于具有搜索和添加选项功能的动态下拉列表由用户。
laravel - Laravel 表单请求未验证请求
我正在使用 Laravel FormRequest 来避免控制器内部出现混乱的验证请求。为此,我指的是这篇文章 https://medium.com/@kamerk22/the-smart-way-to-handle-request-validation-in-laravel-5e8886279271
问题是每次我调用 store 方法时,都会抛出以下错误
我正在使用 ajax 调用 store 方法
这是我的代码
控制器
表单请求类
此行为仅在不满足规则时发生。如果所有字段均已成功验证,则TicketStoreRequest
类不会引发错误。
php - Laravel 验证规则在尝试更新相同的记录而不进行更改时失败
我有一个名为的表,Sides
其中包含id
、和其他一些目前不重要的字段。name
side_category_id
我想验证在创建新side
记录时,该记录不存在。所以,假设我在数据库中有一条记录,例如:
如果我尝试插入新记录,name = 'salad'
则side_category_id = 3
创建必须失败并返回错误。
我通过使用以下规则实现了这一点:
到现在为止还挺好。它按预期工作。但是现在如果我想编辑一条记录并保存它而不做任何修改,它会返回一个错误,这不是我想要的结果。
如果我尝试在不进行任何修改的情况下更新记录,它应该会成功。如何更新我的规则以实现这一目标?
php - 检查 Laravel 表单请求验证中是否存在嵌套值
我有以下验证规则:
他们工作正常,直到我需要实现这个测试用例:
定价又名MenuItem::MENU_ITEM_PRICING
是一个数组数组。我需要检查 whenMenuItem::MENU_ITEM_SIDE
被传递为true
thenpricing
数组必须包含一个子数组,其中包含该特定项目的一些值。
前任:
前面的例子是有效的。但:
无效,应该是:
我如何检查(在我的班级内FormRequest
)是否应该包含一个带有名为 的键的子数组?MenuItem::MENU_ITEM_SIDE == true
MenuItem::MENU_ITEM_PRICING
sideprice