Laravel 根据字段的值进行验证
Laravel Validation depending on the value of field
假设我有一个包含一些值的组合框
<option value="0">All</option>
<option value="1">ABC</option>
<option value="2">PQR</option>
<option value="3">XYZ</option>
我的验证如下
'dept_id' => 'required|exists:department,id'
如您所见,我希望 dept_id 字段是部门 table id 列中存在的 ID,但我的第一个选项是 "All"其id明显不存在部门table.
如果 value=0 in Laravel 5.6,我如何忽略 exists 规则?
您有 2 种方法可以创建 custom validation 规则,
或者像这样HTML
<option>All</option>
<option value="1">ABC</option>
<option value="2">PQR</option>
<option value="3">XYZ</option>
并删除 required
规则。
我推荐自定义验证规则方式,示例如下
$validator = Validator::make($request->all(), [
'dept_id' => [
'required',
function($attribute, $value, $fail) {
if ($value != '0') {
// check the existence of $value in db
// if exists return true
}
// return error because it was neither found in db nor its All
return $fail($attribute.' is invalid.');
},
],
]);
$validatior->validate();
假设我有一个包含一些值的组合框
<option value="0">All</option>
<option value="1">ABC</option>
<option value="2">PQR</option>
<option value="3">XYZ</option>
我的验证如下
'dept_id' => 'required|exists:department,id'
如您所见,我希望 dept_id 字段是部门 table id 列中存在的 ID,但我的第一个选项是 "All"其id明显不存在部门table.
如果 value=0 in Laravel 5.6,我如何忽略 exists 规则?
您有 2 种方法可以创建 custom validation 规则,
或者像这样HTML
<option>All</option>
<option value="1">ABC</option>
<option value="2">PQR</option>
<option value="3">XYZ</option>
并删除 required
规则。
我推荐自定义验证规则方式,示例如下
$validator = Validator::make($request->all(), [
'dept_id' => [
'required',
function($attribute, $value, $fail) {
if ($value != '0') {
// check the existence of $value in db
// if exists return true
}
// return error because it was neither found in db nor its All
return $fail($attribute.' is invalid.');
},
],
]);
$validatior->validate();