【问题标题】:Dynamic validation rules based on input in Larave基于 Laravel 中输入的动态验证规则
【发布时间】:2021-06-24 06:00:42
【问题描述】:
我想知道 Laravel 请求验证中是否有一些规则类似于 required_if/required_unless 但检查值是否存在于表中。
例如,我有一个包含两个字段的表单 - 姓氏和电话号码。提交表单后,我需要将这些数据保存到表格中。但是,我需要检查电话号码是否出现在桌子上。如果电话号码已经在表格中,我需要显示错误,但应该可以保存数据。类似unique_unless:ignore_duplicates:table,phone_number
我看到这样的流程
- 填写表格并提交
- 请求验证并显示电话号码已被占用的消息
- 设置一个复选框,我想忽略此类错误并再次提交数据
- 请求再次验证,但这次唯一性规则被跳过
- 如果没有其他错误发生,请保存数据
【问题讨论】:
标签:
laravel
forms
validation
【解决方案1】:
我不认为你可以在这里使用任何开箱即用的东西。但是,如果我正确地解决了您的问题,可以使用closure-based rule 来解决,例如:
$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.");
}
}
}
]
];