Laravel проверка: требуется любое из двух полей, если доступно другое поле - PullRequest
1 голос
/ 29 января 2020

У меня есть 4 поля в идентификаторе запроса, CID, PID, item_number

, где

  • требуется одно из двух полей от id и CID
  • и если присутствует CID, то требуется PID или item_number

  • ниже приведены мои входные данные и то, что я пытался проверить

"CID":40,
"PID": 1210111037
'id' => 'required_without:CID|integer',
'CID' => 'required_without:id|integer',
'PID' => 'required_with:CID|integer',
'item_number' => 'required_with:CID|integer',
'id' => 'required_without:CID|integer',
'CID' => 'required_without:id|integer',
'PID' => 'required_without:item_number|required_with:CID|integer',
'item_number' => 'required_without:PID|required_with:CID|integer',

вышеприведенный код выдает ошибку Номер элемента необходим при наличии идентификатора клиента.

Ответы [ 2 ]

1 голос
/ 29 января 2020

Вы можете проверить правило проверки 'required_without_all'

'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'

Вы также можете создать динамический c массив правил.

$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';
      }
}
0 голосов
/ 29 января 2020

Вы можете проверить laravel required_if правило проверки

'id' => 'required_without:CID|integer',
'CID' => 'required_if:id,==,""|integer',
'PID' => 'required_if:CID,!=,""|integer',
'item_number' => 'required_if:PID,==,""|integer'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...