【问题标题】:How to make sure validation for at least one section with Laravel validation如何使用 Laravel 验证确保对至少一个部分进行验证
【发布时间】:2017-08-04 09:54:09
【问题描述】:

我有一个包含 AB 两个部分的表单。

A 有以下字段。 名称,结果

B 有以下字段。 名称1,结果1

不,我想确保用户至少填写一个部分才能继续。

这就是我想要做的。

$this->validate($request, [
               'name' => 'required',
               'result' => 'required',
               'name1' => 'required',
               'result1' => 'required'
 ]);

这会验证两个部分字段,但我想至少验证一个部分。

【问题讨论】:

  • 拥有两个表单(每个部分一个)以及您发布到的两个不同操作不是更有意义吗?
  • 是的,它可以做到,但这可能是我想要做的吗?

标签: validation laravel-5


【解决方案1】:

一个选项可能是您可以检查某些输入是否为空,然后对每个检查进行验证,但这可能不是一个好方法。

你也可以试试这个,更干净的方法。

  $this->validate($request, [
                'name' => 'required_without:name1,result1',
                'result' => 'required_without:name1,result1',
                'name1' => 'required_without:name,result',
                'result1' => 'required_without:name,result'
             ]);

【讨论】:

    【解决方案2】:

    你可以使用Required Without

    根据documentation

    $input = $request->all();
    
    
        if(array_key_exists('name', $input) && array_key_exists('name1', $input) ){
            echo "Either of the section is required";
        }
    
        if(array_key_exists('result', $input) && array_key_exists('result1', $input) ){
            Echo"Either of the section is required";
        }
    
        $rules = [
            'name' => 'required_without:name1,result1',
            'result' => 'required_without:name1,result1',
            'name1' => 'required_without:name,result',
            'result1' => 'required_without:name,result'
        ];
    
    
    
        //validating request agianst rules
        $validator = Validator::make($input, $rules);
    
        //if validation fails, will throw ValidationHttpException
        if($validator->fails()) {
            print_r($validator->errors());
        }else{
            echo "Validation passed";
        }
    

    看看这是否适合你!!如果没有,您可以随时使用custom validators

    【讨论】:

    • 通过使用上面的代码,通过语法错误,并通过在 'required_with:result' 周围加上引号,验证不会运行
    • 已更新。您唯一需要处理的错误消息。 $validator->errors() 将在array 中为您提供多个错误。您可以只向用户显示第一个错误,但这完全取决于您的要求,您还可以显示所有错误消息。
    • 感谢您的努力,如果发现任何问题,我会通知您
    猜你喜欢
    • 2014-06-17
    • 2014-07-15
    • 2018-10-03
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 2017-05-30
    • 2022-12-08
    • 1970-01-01
    相关资源
    最近更新 更多