首页 > 解决方案 > 验证两个相互依赖的输入

问题描述

我有两个输入 'creditor' 和 'debtor' ,我希望用户至少将价值放在其中一个中,或两者兼而有之。这是我正在使用的方法

if($request->input('creditor')==Null && $request->input('debtor')==Null){
        Session::flash('danger','Please add Value in one of the two inputs at least');
        return redirect()->back();
    }

如何使用 laravel 验证做同样的事情,例如:

 $request->validate([
        'creditor' => 'required',
        'debtor' => 'required',

    ]

但是如果其中一个输入具有值,我想要什么,则无需检查另一个

标签: laravel-5

解决方案


有很多方法可以解决这个问题,但我建议你使用$request->filled()它来检查一个字段是否存在以及它是否有价值。所以,它确实isset()!empty()在一起。

如果其中一个语句/条件为真,则||AKAOR逻辑返回true,如果两个条件都为假,则返回假。

if($request->filled('creditor') || $request->filled('debtor')){
    // Either of the has value in it.
} else {
    Session::flash('danger','Please add Value in one of the two inputs at least');
    return redirect()->back();
}

编辑

你也可以使用required_without_all:foo,bar,

一个例子:

$rules = array(
    'creditor' => 'required_without_all:debtor',
    'debtor' => 'required_without_all:creditor',
);

$validator = \Validator::make($request->all(), $rules);

if($validator->fails()){
    Session::flash('danger','Please add Value in one of the two inputs at least');
        return redirect()->back();
}

推荐阅读