laravel-5 - 验证两个相互依赖的输入
问题描述
我有两个输入 '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',
]
但是如果其中一个输入具有值,我想要什么,则无需检查另一个
解决方案
有很多方法可以解决这个问题,但我建议你使用$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();
}
推荐阅读
- go - 用于orm方法的Golang gorm联合函数
- css - 基于内容高度的 CSS-Grid 填充行
- javascript - 如何在多个表行中通过选择(mysql数据库)获取动态值
- python - 如何在python中检测句子的语言
- firebase - Flutter Firestore 错误:DocumentSnapshotPlatform 中不存在字段
- dart - dart CLI 命令 - 为什么没有 lib/proj.dart 文件?飞镖甜点
- leaflet - 在 Leaflet 中的路线上添加标签
- java - (java.nio.file.NoSuchFileException) 在我的代码中?
- python - 将 POST 请求从客户端发送到 Django 模型的最佳实践?
- javascript - SetTimeout 不同步时如何同步?