命令中表单请求和验证程序之间共享的Laravel验证规则
我在FormRequest(Laravel 6.X)中有一组验证规则,如下所示:命令中表单请求和验证程序之间共享的Laravel验证规则,laravel,laravel-validation,Laravel,Laravel Validation,我在FormRequest(Laravel 6.X)中有一组验证规则,如下所示: { return [ 'rule1' => 'required|numeric', 'rule2' => 'required|numeric', ..., 'ruleN.*.rule1' => ''required|string|max:50' ]; }
{
return [
'rule1' => 'required|numeric',
'rule2' => 'required|numeric',
...,
'ruleN.*.rule1' => ''required|string|max:50'
];
}
这对于针对端点的每个AJAX HTTP请求都非常有效,因为它是创建的。但是,我还需要通过CLI命令运行相同的过程(这次不是针对请求而是针对输入数组进行验证),其中不能使用此FormRequest,因为它不是请求
通过尝试将FormRequest注入命令,如:
public function handle(CustomFormRequest $validator)
{
...
}
每次运行时,命令执行总是失败(当然),因为输入的类型不是请求
在谷歌上搜索一下,我最终得到了以下形状的解决方案(规则与ofc相同):
但是,我希望在一个公共位置(例如文件)共享规则集,并且FormRequest和Validator类都可以采用相同的规则,而无需在这两个位置(Form Request和Command)写入,以使它们在任何更改下保持不变
有没有办法在一个公共位置(例如文件)编写“规则”数组并将其导入这两个位置?也许基类可以工作,但这样做看起来不太合适,因为他们没有分享任何其他东西。我想到了一个特性,但我犹豫这是否是最好的解决方案。FormRequest的
规则()
和属性()
方法是公开的,因此您可以创建FormRequest的新实例并从中获取规则/属性,类似这样:$validator=validator::make($data,(new YourFormRequest())->规则())代码>嗯,我没想过。我试试看。谢谢!:)
$validator = Validator::make([
'rule1' => $firstName,
'rule2' => $lastName,
], [
'rule1' => ['required'],
'rule2' => ['required'],
]);