我在 AdonisJs 中的自定义验证器不起作用

拉达梅兹·金德里·赫西利奥

我遵循了有关如何制作自定义验证器的 Adonis 文档。我把它做得这么简单只是为了测试。

当我进行“发布”时,我收到消息“cpf 未定义为验证规则”

代码:

cpf.js

const Validator = use('Validator')

const cpfValidation = async (data, field, message, args, get) => {
  const value = get(data, field)

  console.log('This line is on console!')

  if (!row) {
    throw message
  }
}

Validator.extend('cpf', cpfValidation)

用户.js

'use strict'

class User {

  get validateAll() {
    return true
  }

  get rules() {
    return {
      name: 'required',
      lastname: 'required',
      email: 'required|email|unique:users',
      cpf: 'cpf',
      birthday: 'required',
      password: 'required|min:6|max:20'
    }
  }
}

module.exports = User

结果:https : //i.imgur.com/J5L8Y0O.png

任何的想法?

拉达梅兹·金德里·赫西利奥

稍微打破我的头后,我找到了解决方案。

首先,我必须安装 adonis 提供程序验证:adonis install @adonisjs/validator

并将其放在start/app.js中的提供者列表中

const providers = [
  '@adonisjs/validator/providers/ValidatorProvider'
]

然后我通过以下方式创建一个新的提供者:adonis make:provider CustomProvider

它会在根目录的“providers”文件夹中创建一个新的提供者。

我的这个类的代码是:

'use strict'

const { ServiceProvider } = require('@adonisjs/fold')

class CustomValidator extends ServiceProvider {

  async isCpfCorrect(data, field, message, args, get) {
    const cpf = get(data, field);

    //It will be validated by "unique" validation, if value is null
    if(!cpf){
       return
    }

    /*
      ALL MY LOGIC SHOULD BE HERE...
    */

  }

  register() { }

  boot() {
    const Validator = use('Validator');
    Validator.extend('cpf', this.isCpfCorrect);
  }
}

module.exports = CustomValidator

然后我必须在start/app.js的提供者列表中添加这个提供者

const path = require('path')

const providers = [
  '@adonisjs/framework/providers/AppProvider',
  '@adonisjs/auth/providers/AuthProvider',
  '@adonisjs/bodyparser/providers/BodyParserProvider',
  '@adonisjs/cors/providers/CorsProvider',
  '@adonisjs/lucid/providers/LucidProvider',
  '@adonisjs/mail/providers/MailProvider',
  '@adonisjs/framework/providers/ViewProvider',
  '@adonisjs/validator/providers/ValidatorProvider',
  path.join(__dirname, '..', 'providers', 'CustomValidator')
]

然后我将能够在验证中使用我的提供程序:

'use strict'

class User {

  get validateAll() {
    return true
  }

  get rules() {
    return {
      name: 'required',
      lastname: 'required',
      email: 'required|email|unique:users',
      cpf: 'required|cpf' <--------------- here is my custom provider for cpf,
      birthday: 'required',
      password: 'required|min:6|max:20'
    }
  }
}

module.exports = User

我在文档中找到的所有这些:

https://adonisjs.com/docs/4.1/service-providershttps://adonisjs.com/docs/4.1/extending-adonisjs

干杯。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Angular 6:setTimeout函数在我的自定义验证器中不起作用

我的自定义消息请求验证器不起作用Laravel

如何检查为什么我的自定义验证器不起作用?

我的自定义函数中的for循环不起作用

使用AdonisJS中的API

为什么我的AngularJS自定义拦截器不起作用

为什么我的自定义光标不起作用?

为什么我在imagemosaic中的自定义尺寸在geoserver getmap请求中不起作用?

为什么自定义错误页面在我的Nginx配置中不起作用?

为什么我的自定义process.env在dotenv中不起作用?

我的自定义管道(过滤器)在Angular 2中不起作用

我的[(ngModel)]在Ionic 4的自定义组件中不起作用

我的自定义组件在 React App.js 中不起作用

我的简单自定义 JavaScript 组件在 HTML 中不起作用?

IsValid方法在MVC中的自定义必需验证属性中不起作用,并且我没有使用ModelState.IsValid

Adonis api邮件不起作用(adonis安装@ adonisjs / mail)

在控制器AdonisJS中返回视图

为什么我的 TemplateBinding 到我的自定义 TemplatedView 的 BindableProperty 不起作用

我无法在 admin 中登录,并且在自定义用户之后登录在 Django 项目中不起作用

使用其他依赖项方法的类在我的自定义库中不起作用,有什么建议吗?

为什么在 SwiftUI 中应用自定义 ButtonStyle 后我的箭头快捷方式不起作用?

not_required_when当验证器在AdonisJs中时

验证器不适用于 AdonisJS 中的资源路由

为什么我的Keras自定义损失函数不起作用?

我非常简单的自定义Puppet类型和提供程序不起作用

为什么我的自定义过滤器不起作用?

AngularJs自定义过滤器在我的情况下不起作用

我正在尝试自定义搜索栏,但是它不起作用

带有内容模板的ASP.net自定义控件对我不起作用