Проблема с валидацией
Доброе утро, коллеги.
У меня возникла такая проблема. Мне на детали с редактируемым реестром нужно сделать запрет на сохранение при определенном условии. Но чтобы получить это условие необходимо делать esq запрос. Он не успевает выполниться, поэтому метод save срабатывает. Валидацию я пытаюсь сделать с помощью условия в методе save. Вызываю базовую реализацию только тогда, когда условие true. В ином случае пользователь получает сообщение. Подскажите, как поступать в такой ситуации. Можна реализовать на сервере, но как тогда вывести окошко с информацией. Буду очень признателен за помощь, поскольку данный кейс не первый раз вызывает проблемы. Желательно чтобы способ был универсален, без привязки к типу детали.
Нравится
Сделай все проще перехвати событие сохранение или добавление и вызови свой esq в него передай как callbak callParent и если валидация успешная вызывай callParent сохранения
Нужно перекрыть метод asyncValidate, пример ниже
asyncValidate: function(callback, scope) {
this.callParent([function(response) {
if (!this.validateResponse(response)) {
return;
}
Terrasoft.chain(
function(next) {
this.validateAccountOrContactFilling(function(response) {
if (this.validateResponse(response)) {
next();
}
}, this);
},
function(next) {
callback.call(scope, response);
next();
}, this);
}, this]);
},
validateAccountOrContactFilling: function(callback, scope) {
var account = this.get("Account");
var contact = this.get("Contact");
var result = {
success: true
};
if (this.Ext.isEmpty(account) && this.Ext.isEmpty(contact)) {
result.message = this.get("Resources.Strings.RequiredContactOrAccountMessage");
result.success = false;
}
callback.call(scope || this, result);
}
Григорий Чех,
А если условие валидации не такое простое, а там esq запрос, как мне реализовать данный пример
Сделай все проще перехвати событие сохранение или добавление и вызови свой esq в него передай как callbak callParent и если валидация успешная вызывай callParent сохранения
Григорий Чех,
Событие сохранения, вы имеете ввиду onSaved?
Это зависит от типа детали Для детали с реестром addRecord
Григорий Чех,
А где это можно посмотреть, чтобы знать на будущее?
Смотреть от кого наследуешь деталь (базового предка) или дальше вверх по иерархии и там смотришь как выполняется сохранение. Можно заглянуть в документацию на академии там далеко не все хоть она и активно дорабатывается