首页 > 解决方案 > Laravel FormRequest 仅在最小数量的输入字段中验证最小字符串长度

问题描述

在我的 laravel (5.7) 应用程序中,我有一个带有输入字段数组的表单请求。数组“答案”有 8 个不同的输入字段。到目前为止,我已经能够有一个验证规则来检查每个元素的长度至少为 10 个字符。

class MyFormRequest extends FormRequest
{
    public function rules()
    {
        $rules = [
                    'answers'                  =>'required',
                    'answers.*'                =>'required|min:10', 
        ];
    }
}

但我想将要求更改为仅适用于 4 个输入字段,无论顺序如何。因此,例如,如果用户填写的输入字段编号为 1、5、6、8,每个字段有 10 个字符,则尽管字段 2、3、4、7 为空,但该表单将被接受。我怎样才能做到这一点?我在文档中读到可以使用有时规则,但示例在控制器中使用它,我不了解如何在 FormRequest 类中应用自定义有时规则。

提前致谢!

标签: laravelvalidationlaravel-formrequest

解决方案


尝试这个;

$rules = [
    'answers' => 'required|array|min:4',
    'answers.*' => 'sometimes|min:10', 
];

意义;

"answers" -> answers 是一个数组,至少有 4 个索引,

"answers.*" -> 在 answers 数组中,索引应该在它出现时进行验证

检查 Validating When PresentValidating Arrays


推荐阅读