У меня есть набор предопределенных правил, которые загружаются с помощью вызова отдыха с внешнего ресурса.пользовательский валидатор parsleyjs с вычисленным сообщением
rules.yaml
rules:
firstname:
rule: value.length <= params.max
message: Bitte geben Sie nicht mehr als {{params.max}} Zeichen ein
params:
max: 20
lastname:
rule: value.length <= params.max
message: Bitte geben Sie nicht mehr als {{params.max}} Zeichen ein
params:
max: 30
Тогда я написал собственный валидатор вроде этого:
window.Parsley.addValidator('rules', {
rules: rules,
validateString: function (value, requirement) {
let constraint = rules[requirement];
if (constraint) {
let params = constraint.params;
if (constraint.message) {
let errorMessage = Mustache.render(constraint.message, {params: params, value: value});
}
return !value || eval(constraint.rule);
} else {
console.log('Invalid constraint: $requirement could not be found inside $rules');
return false;
}
},
requirementType: 'string',
messages: {
en: 'The string ist invalid %s.',
fr: 'Ce nombre n\'est pas un multiple de %s.'
}
});
Validation работает, как ожидалось. Но, как вы можете видеть, сообщение об ошибке динамически вычисляется во время проверки. Как Parsley может использовать мое вычисляемое сообщение в этой настройке?
Файл определения правил содержит еще много бизнес-правил, а некоторые более сложные, чем эти простые. Файл правил разделяется между несколькими проектами. Мы даже разделяем эти правила между интерфейсом и бэкэнд, поэтому мне нужно что-то, как правило, интерпретатор. –
Лучшие независимые пользовательские валидаторы. С помощью своего стандартного валидатора «meta» вы фактически не используете какую-либо логику. –