【问题标题】:Laravel 5.2 - validation - One of the fields is requiredLaravel 5.2 - 验证 - 必填字段之一
【发布时间】:2016-09-13 10:03:49
【问题描述】:

假设一个场景,

There are 2 fields available in the form.

1) input type file for manual upload.
2) input type = text to enter youtube video url.

是否可以使用 laravel 内置验证,以便在用户将两个字段都留空时触发验证!

我已经浏览了https://laravel.com/docs/5.3/validation,但找不到我想要的。

【问题讨论】:

    标签: php validation laravel-5 laravel-5.2


    【解决方案1】:

    在您的控制器中,您可以执行以下操作:

    $validator = Validator::make($request->all(), [
        'link_upload' => 'required|etc|...',
    ]);
    
    $validator2 = Validator::make($request->all(), [
        'file_upload' => 'required|etc|...',
    ]);
    
    if ($validator->fails() && $validator2->fails()) {
        // return with errors
    }
    

    【讨论】:

    • 我正在遵循创建表单请求类来处理验证的做法。可以用吗?
    • 我认为,但不确定,您可以在规则数组中使用“required_unless”。但这仅适用于您想要其中之一,而不是两者兼而有之。
    【解决方案2】:

    尝试required-without-all 验证规则。如文档中所述:

    只有在所有其他指定字段都不存在时,才必须存在正在验证的字段。


    假设您的字段名称是 urlfile,您的规则如下所示:

    $rules = [
        'url' => 'required_without_all:file',
        'file' => 'required_without_all:url'
    ];
    

    【讨论】:

      【解决方案3】:
      【解决方案4】:

      试试这个,

      在你的更新方法中添加这个

      $this->validate($request, [
            'fileName'=>'required',
            'urlName'=>'required'
      ]);
      

      别忘了在你的模型中设置可填充对象

      protected $fillable = ['fileName','urlName'];
      

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 2015-03-08
        • 1970-01-01
        • 2012-05-23
        • 2013-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-14
        相关资源
        最近更新 更多