You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Adonis V4路由验证器无法显示自定义错误问题求助

解决Adonis V4自定义验证消息不生效的问题

问题根源

你的验证器消息配置和全局异常处理存在两处问题:

  1. 验证器的消息键未绑定到具体字段,通用的required无法触发对应字段的自定义提示
  2. 全局异常处理器未正确解析验证异常的详细错误信息,返回了框架默认提示

解决方案

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 17:45:43