gpt4 book ai didi

php - 如何在 laravel 中忽略某些有条件的字段的验证

转载 作者:行者123 更新时间:2023-12-04 12:47:49 27 4
gpt4 key购买 nike

我有一个具有这些规则的 OrderRequest:

public function rules()
{
return [
//
'surname' => 'required|max:255',
'name' => 'required|max:255',
'city' => 'required|max:255',
'post_office'=>'required|max:255',
];
}

如果请求有 user_id,我需要忽略姓氏和名字验证

目前是这样做的:

if ((Input::has('user_id'))) {
return [
//
'city' => 'required|max:255',
'post_office'=>'required|max:255',
];
}
return [
//
'surname' => 'required|max:255',
'name' => 'required|max:255',
'city' => 'required|max:255',
'post_office'=>'required|max:255',
];
}

但是我可以做得更好吗?如何做?

最佳答案

由于 user_id 在您的请求中,您可以使用 required_without。当任何其他指定字段不存在时,这要求验证字段存在且不为空。

return [
//
'surname' => 'required_without:user_id|max:255',
'name' => 'required_without:user_id|required|max:255',
'city' => 'required|max:255',
'post_office'=>'required|max:255',
];

所以现在 surnamename 必须存在并且只有当 user_id 不存在时才不能为空。


另外正如我在对 Alexey 的评论中所说:

在较新的 Laravel 项目中使用 Request 而不是 InputInput 是请求的别名,它们解决了来自服务容器的相同依赖关系,但是 Input 没有被提及较新的 Laravel 文档,将来可能会被删除。如果你要升级 Laravel,如果你必须用 request 替换所有 Input 会很不幸;)

您可以使用 request() 辅助函数或将 Helper contract 或 Facade 注入(inject)到构造函数/方法中。

public function __construct(Request $request)
{
$this->request = $request;
}

关于php - 如何在 laravel 中忽略某些有条件的字段的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42886187/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com