什么是 Precognition
Precognition 是一种在表单提交之前执行服务端校验的机制。 你无需在前端重复定义校验规则,可以直接使用 Laravel 的规则。 与普通请求不同,Precognition 请求会执行路由中间件与 Form Request 的校验,但不会执行控制器方法主体。 因此非常适合在输入过程中进行实时校验。安装
在 Laravel 13 中,后端无需额外安装laravel/precognition。
你只需要安装用于前端的辅助包。
- Vue:
laravel-precognition-vue - React:
laravel-precognition-react - Alpine.js:
laravel-precognition-alpine
Inertia 自 2.3 起内置支持 Precognition,Inertia 3 也可直接使用。
在使用 Inertia 表单时,通常不需要额外引入
laravel-precognition-vue / laravel-precognition-react。后端配置
给路由添加HandlePrecognitiveRequests 中间件。
将校验规则集中在 Form Request 中是实践性的做法。
使用 Form Request 更便于规则复用和职责分离。
前端集成
Alpine.js(Blade)
Vue(Inertia.js)
React(Inertia.js)
使用 Axios 的原生 JS
Precognition 库使用 Axios。 如果你希望使用已有的 Axios 实例,可以通过client.use() 替换。
控制校验时机
对逐个字段的校验使用validate()。
setValidationTimeout() 调整。
validateFiles()。
表单辅助函数
useForm() 可以整体管理提交与错误状态。
validating:正在发起校验请求processing:正在提交errors:错误列表valid('field')/invalid('field'):字段校验状态submit():常规提交