本文目录导读:

在 Laravel 验证中,exclude 主要用于排除字段数据,而非“排除验证”,具体用法如下:
exclude 的作用
排除字段数据:如果验证失败,该字段的数据不会传递给控制器或后续逻辑。
use Illuminate\Support\Facades\Validator;
$validator = Validator::make($request->all(), [
'password' => 'required|min:8|exclude', // 验证失败时排除 password
]);
使用场景
安全敏感字段
'credit_card' => 'required|string|exclude' // 验证通过但不会传递实际数据
条件排除
use Illuminate\Validation\Rule;
'email' => [
'required',
'email',
Rule::excludeIf(fn () => auth()->user()->is_admin), // 管理员邮箱被排除
]
常见混淆:排除字段 vs 排除验证规则
❌ 错误写法(无效)
'field' => 'required|exclude' // 这会排除字段,而非跳过验证
✅ 正确做法:跳过某条验证规则
如果想跳过特定验证,使用 sometimes 或条件验证:
// 使用 sometimes(基于条件) 'some_field' => 'sometimes|required|string' // 仅在字段存在时验证 // 使用 Rule::when 'score' => Rule::when($request->type === 'exam', 'required|numeric', 'nullable')
完整示例对比
// exclude - 排除字段数据
$rules = [
'password' => 'required|min:8|exclude',
'token' => 'required|exclude'
];
// 条件排除 - 排除特定字段
$rules = [
'email' => ['required', Rule::excludeIf(fn () => $request->is_test)]
];
// 跳过验证 - 不使用 exclude
$rules = [
'optional_field' => 'sometimes|string|max:255' // 字段不存在则不验证
];
注意事项
exclude不跳过验证:字段仍然会被验证- 验证失败仍会排除:即使不通过 validation,字段也会被移除
- 常用组合:常与敏感数据(密码、令牌)一起使用
推荐做法:如果只是想“跳过验证”,使用 sometimes 或 nullable;只有需要移除字段数据时才用 exclude。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播