【问题标题】:Laravel 5.7 validation using required_with and required_with_all for 3 fields does not workLaravel 5.7 使用 required_with 和 required_with_all 验证 3 个字段不起作用
【发布时间】:2020-11-09 15:40:50
【问题描述】:

我的问题是使用 required_withrequired_with_all 进行 Laravel 验证的逻辑如何工作?

我已阅读文档但无法从中获得任何信息documentation link

我正在申请 3 个不同的领域

现在让我给你我的例子来得到我想要的

'start' => 'nullable|required_with:end',
'end' => 'nullable|required_with:start',
'repeat' => 'nullable|required_with_all:start,end',

如果我只提交重复字段,则在 Laravel 中不会执行验证。

您可以从我复制的代码中删除 nullable,如果您只提供重复字段,则仍然不会执行验证。

【问题讨论】:

    标签: laravel validation laravel-5 laravel-5.7 laravel-request


    【解决方案1】:

    OP 真正想要的是:

    1. 能够在不重复出现的情况下提交开始和结束
    2. start 和 end 必须在一起
    3. 如果存在开始或结束,则无法提交重复
    use Illuminate\Validation\Validator;
    
    class MyFormRequest extends FormRequest
        ...
    
        public function rules()
        {
            return [
              'start' => 'required_with:end|required_without:repeat',
              'end' => 'required_with:start|required_without:repeat',
              'repeat' => 'required_without_all:start,end',
            ];
        }
    
        public function withValidator(Validator $validator)
        {
            $validator->after(function ($validator) {
                if ((!$this->input('start') || !$this->input('end')) && $this->input('repeat')) {
                    $validator->errors()->add('repeat', 'The repeat field is required when start and end are present.');
                }
            });
        }
    }
    

    【讨论】:

    • 感谢您的想法。但这并不能解决问题,因为您必须在 start 和 end 存在时提供重复,这是完全相反的。
    • 能够在没有重复出现的情况下提交开始和结束,并且只有在开始和结束都不存在时才能提交重复
    • 我明白了,所以我认为我必须自己解决问题才能实现我想要的,对吧?
    • 我正在使用表单请求
    • 刚刚添加了相同的概念,但我是通过控制器实现的
    猜你喜欢
    • 1970-01-01
    • 2019-05-24
    • 2020-03-07
    • 1970-01-01
    • 2020-07-05
    • 2020-09-30
    • 1970-01-01
    • 2019-09-28
    • 2019-06-07
    相关资源
    最近更新 更多