我遵循了有关如何制作自定义验证器的 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-providers和https://adonisjs.com/docs/4.1/extending-adonisjs
干杯。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句