命令中表单请求和验证程序之间共享的Laravel验证规则

命令中表单请求和验证程序之间共享的Laravel验证规则,laravel,laravel-validation,Laravel,Laravel Validation,我在FormRequest(Laravel 6.X)中有一组验证规则,如下所示: { return [ 'rule1' => 'required|numeric', 'rule2' => 'required|numeric', ..., 'ruleN.*.rule1' => ''required|string|max:50' ]; }

我在FormRequest(Laravel 6.X)中有一组验证规则,如下所示:

    {
        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'],

]);