该技能面向 Laravel 应用的输入验证,整理了一套验证模式与最佳实践,便于在控制器之外组织验证逻辑。\n\n用途:帮助开发者在 Laravel 项目中规范请求数据的校验、清理与安全取值,减少控制器内联验证带来的复用与测试问题。\n\n主要能力:\n1. Form Request 表单请求类:在 authorize() 中检查权限,在 rules() 中定义规则,在 messages() 中自定义错误信息,在 prepareForValidation() 中于验证前清理输入(如 strip_tags、strtolower),在 after() 中做跨字段或业务逻辑校验。\n2. 自定义规则对象:实现 ValidationRule 接口的 validate() 方法,用 $fail 回调报告错误,可复用于复杂规则(示例为 StrongPassword)。\n3. 条件验证:使用 required_if、exclude_if、sometimes 以及 Rule::when() 按条件动态决定校验。\n4. 数组与嵌套字段:使用通配符写法(如 items..product_id、tags.)校验数组及嵌套结构。\n5. 数据库规则:Rule::unique()->ignore() 用于更新,->where() 实现作用域限定,Rule::exists() 附加约束。\n6. 枚举验证:Rule::enum() 限定枚举值,仅允许特定值。\n7. 安全使用已验证数据:只使用 $request->validated() 或 $request->safe()->only()/except()/merge(),避免 $request->all() 与 $request->input() 直接入库。\n\n使用方式:将验证逻辑放入 Form Request 类,控制器方法类型提示该请求类后调用 validated() 或 safe()。需要提前终止时在规则前加 bail。常见陷阱包括在控制器内联验证、缺少 bail、误用未验证数据。\n\n限制与适用场景:以上为 Laravel 惯用模式,适合中大型项目与需要复用、可测试验证逻辑的场景;具体版本兼容性、依赖要求与完整安装步骤资料暂未提供。
laravel-validation-patterns
通用与其它
更新于 10-15 22:38