基于Larave中输入的动态验证规则



我想知道Laravel请求验证中是否有一些规则的作用类似于required_if/required,除非它检查表中是否存在该值。

例如,我有一个包含两个字段的表单——last_name和phone_number。提交表单后,我需要将这些数据保存到一个表中。但是,我需要检查一下桌子上是否有电话号码。如果电话号码已经在表中,我需要显示一个错误,但应该可以保存数据。类似unique_unless:ignore_duplicates:table,phone_number

我看到了类似的流动

  1. 填写表格并提交
  2. 请求已验证,并显示电话号码已被占用的消息
  3. 设置一个复选框,我希望忽略此类错误并再次提交数据
  4. 请求已再次验证,但跳过了此唯一性时间规则
  5. 如果没有发生其他错误,请保存数据

我认为这里没有任何开箱即用的东西。但如果我正确地理解了你的问题,这可以通过一个基于闭包的规则来解决,比如:

$rules = [
...,
'phone_number' => [
...,
function ($attribute, $value, $fail) use ($request) {
if (! $request->input('override')) {
if (YourModel::where('phone_number', $value)->first()) {
$fail("YourModel with this phone number already exists.");
}
}
}
]
];

最新更新