Немного сломав голову, я нашел решение.
Прежде всего мне нужно установить проверку поставщика adonis: adonis install @ adonisjs / validator
И поместите его в список провайдеров внутри start / app. js:
const providers = [
'@adonisjs/validator/providers/ValidatorProvider'
]
Затем я создаю нового провайдера: adonis make: provider CustomProvider
Он создаст нового провайдера в папке «Поставщики» в root.
Мой код для этого класса:
'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
Все это я нашел в do c:
https://adonisjs.com/docs/4.1/service-providers и https://adonisjs.com/docs/4.1/extending-adonisjs
Приветствия.