我有点头疼后,找到了解决办法。
首先,我必须安装 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
那我得把这个provider加入到start/app.js的provider列表中:
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-providers
和
https://adonisjs.com/docs/4.1/extending-adonisjs
干杯。