Laravel验证:如果另一个字段可用,则需要两个字段中的任意一个

Laravel验证:如果另一个字段可用,则需要两个字段中的任意一个,laravel,validation,Laravel,Validation,我在请求id、CID、PID、项目编号中有4个字段 在哪里 id和CID中需要两个选项中的任意一个 如果CID存在,则需要PID或项目编号 下面是我输入的内容和我尝试验证的内容 以上两种方法都会抛出一个错误 当存在客户id时,项目编号是必需的。您可以检查验证规则“必需”而不必填写“全部” 'id' => 'required_without:CID|integer', 'CID' => 'required_without:id|integer', 'PID' => 'requ

我在请求id、CID、PID、项目编号中有4个字段

在哪里

  • id和CID中需要两个选项中的任意一个
  • 如果CID存在,则需要PID或项目编号

  • 下面是我输入的内容和我尝试验证的内容

以上两种方法都会抛出一个错误
当存在客户id时,项目编号是必需的。

您可以检查验证规则“必需”而不必填写“全部”

'id' => 'required_without:CID|integer',
'CID' => 'required_without:id|integer',
'PID' => 'required_without_all:id,item_number|integer',
'item_number' => 'required_without_all:id,PID|integer'
您还可以创建动态规则数组

$rules = [
       'id' => 'required_without:CID|integer',
       'CID' => 'required_without:id|integer'
      ];
if($request->CID ?? false){
      if($request->PID || $request->$request->item_number){ // I assume both are exist not will not be undefined.
         $rules['PID'] = 'integer';
         $rules['item_number'] = 'integer';
      }else{
         $rules['PID'] = 'required_with:CID|integer';
         $rules['item_number'] = 'required_with:CID|integer';
      }
}

如果需要验证规则,您可以检查laravel required\u

'id' => 'required_without:CID|integer',
'CID' => 'required_if:id,==,""|integer',
'PID' => 'required_if:CID,!=,""|integer',
'item_number' => 'required_if:PID,==,""|integer'

谢谢这很有效。因此,我需要手动更改验证消息是的,您可以将,
$message
数组更改为验证中的第三个参数。我更喜欢第一个解决方案。因为我创建了一个用于验证的配置文件。:)您好,欢迎来到stackoverflow,谢谢您的回答。你能不能简单地解释一下你解决了什么问题以及你是如何解决的,而不是仅仅发布一段代码?这将有助于将来发现这个问题的人更好地理解这个问题以及如何处理它。
'id' => 'required_without:CID|integer',
'CID' => 'required_without:id|integer',
'PID' => 'required_without_all:id,item_number|integer',
'item_number' => 'required_without_all:id,PID|integer'
$rules = [
       'id' => 'required_without:CID|integer',
       'CID' => 'required_without:id|integer'
      ];
if($request->CID ?? false){
      if($request->PID || $request->$request->item_number){ // I assume both are exist not will not be undefined.
         $rules['PID'] = 'integer';
         $rules['item_number'] = 'integer';
      }else{
         $rules['PID'] = 'required_with:CID|integer';
         $rules['item_number'] = 'required_with:CID|integer';
      }
}
'id' => 'required_without:CID|integer',
'CID' => 'required_if:id,==,""|integer',
'PID' => 'required_if:CID,!=,""|integer',
'item_number' => 'required_if:PID,==,""|integer'