Adonis V4路由验证器无法显示自定义错误问题求助
解决Adonis V4自定义验证消息不生效的问题
问题根源
你的验证器消息配置和全局异常处理存在两处问题:
- 验证器的消息键未绑定到具体字段,通用的
required无法触发对应字段的自定义提示 - 全局异常处理器未正确解析验证异常的详细错误信息,返回了框架默认提示
解决方案
1. 修正验证器的消息配置
将messages中的键改为字段名.规则名的格式,确保绑定到vei_placa字段的required规则:
'use strict' class StoreVeiculo { get rules () { return { vei_placa: 'required', }; } get messages () { return { 'vei_placa.required': 'Placa do veiculo nao foi enviada', }; } } module.exports = StoreVeiculo
2. 调整全局异常处理器
打开app/Exceptions/Handler.js,确保handle方法专门处理ValidationException,返回具体的错误消息:
'use strict' const BaseExceptionHandler = use('BaseExceptionHandler') class ExceptionHandler extends BaseExceptionHandler { async handle(error, { response }) { // 单独处理验证异常 if (error.name === 'ValidationException') { return response.status(error.status).send(error.messages) } // 其他异常沿用默认处理逻辑 return super.handle(error, { response }) } } module.exports = ExceptionHandler
3. 简化路由配置(可选)
你的路由配置本身可用,但Adonis V4支持更简洁的资源路由验证写法:
Route.resource("veiculos", "VeiculoController").validator({ store: 'StoreVeiculo' })
完成以上修改后,再次发送POST请求,当vei_placa字段缺失时,就能收到你定义的自定义错误消息了。
内容的提问来源于stack exchange,提问作者Diego Felipe
相关产品推荐
相关产品推荐

