laravel 在验证中合并required、sometimes和regex

zsbz8rwp  于 2023-01-18  发布在  其他
关注(0)|答案(1)|浏览(176)

我想实现以下逻辑:

  • 如果bank_info_contact_last_namebank_info_streetbank_info_city包含任何字符,则需要字段bank_info_zip
  • 如果它包含任何字符,则应与以下模式匹配:\d{5}
  • 如果它为空,则不应与模式匹配。

这是我的验证表达式/规则:

"bank_info_zip" => "required_with:bank_info_contact_last_name,bank_info_street,bank_info_city|regex:/\d{5}/"

我试过添加sometimes,但不明白它是如何与required一起工作的,因为它似乎做了完全相反的事情/否定了它的效果。
文档中的示例如下:

$v = Validator::make($data, [
    'email' => 'sometimes|required|email',
]);

这让我更加怀疑自己的逻辑思维能力。

3htmauhk

3htmauhk1#

request()->validate([
    'bank_info_zip' => [
        'required_with:bank_info_contact_last_name,bank_info_street,bank_info_city',
        \Illuminate\Validation\Rule::when(request()->bank_info_zip, ['regex:/\d{5}/'])
    ],
]);

资源:

  1. Conditional Validation Rules
  2. required_with:foo,bar,...

相关问题