Laravel Validator存在或等于/ conditonal或

时间:2019-04-23 21:53:53

标签: php laravel validation laravel-5 laravel-validation

我有一个输入值,可以是数据库中存在的实际ID,也可以是表示特殊情况的0。

无论如何,如果此值不是空发送的,我需要使用类似的方法来验证它

Validator::make($data, [
    'item_id.*' => 'required|in:0[OR]exists:items_table,id',
]);

问题是我没有找到有关如何执行此操作的任何文档[OR]。我设法找到的几乎所有内容都与针对其他键进行测试或针对不存在“或”的显式数组检查 just 相关。

注意::这不是 required_if / unless 不是情况,因为我需要对照当前测试的值,而不是其他键。

注意2::此页面:https://laravel.com/docs/5.8/validation没有提供答案

2 个答案:

答案 0 :(得分:1)

可能的解决方案之一是创建自定义验证规则,该规则将检查所需的值。您可以获取有关here

的更多信息

答案 1 :(得分:0)

您可以轻松地为该变量编写自己的验证规则。像这样:

if (!empty($data->item_id)){
    if($data->item_id<>0 || $data->item_id <not in list of values>){
          return Redirect::back()->withErrors('error messages here')->withInput();
    }
}