ExtJS 4 Отправить форму, используя модель прокси - PullRequest
2 голосов
/ 20 ноября 2011

возможно ли отправить форму extjs 4, используя прокси модели / магазина. Я хочу использовать действие отправки для удаленной проверки. Я хочу использовать конфигурацию остальных прокси из этой модели, чтобы избежать двухкратной настройки соединения с базой данных / сервером.

Спасибо за помощь!

1 Ответ

2 голосов
/ 18 апреля 2012

Если ваша форма точно представляет один экземпляр вашей модели, почему вы используете форму отправки, а не model.save(); или store.sync()? Эти методы были разработаны для работы с вашей моделью данных и используют все классные встроенные возможности данных ExtJS.

В документации для Ext.data.Model под подзаголовком "Использование прокси" есть примеры для различных операций, которые вы можете захотеть выполнить (GET, PUT, POST, DELETE - иначе загрузка, сохранить, сохранить, уничтожить).

Затем вы можете прикрепить некоторые обратные вызовы к методу model.save (), чтобы вы знали, была ли операция успешной или неудачной (возможно, из-за проверки на стороне сервера).

Вот сообщение на форумах Sencha, рассказывающее о вашем конкретном случае использования: ExtJS 4 Синхронизация и обработка успеха / сбоя

Суть в том, что если проверка на стороне сервера вернула ошибку с содержимым JSON, например:

{ "success": "false", "message": "Error message goes here." }

Затем вы можете сохранить свою модель, отловить ответ об ошибке и использовать этот дополнительный элемент JSON сообщения, чтобы предупредить пользователя, почему он не прошел проверку на стороне сервера. Конечно, вы можете вернуть более подробное сообщение JSON, если хотите, но это подтверждает концепцию. Расширьте, чтобы установить ваше приложение.

myExtModelInstance.save({
    success: function(rec, op) {
        // do something
    },
    failure: function(rec, op) {
        // Lets show a message for the failure with the 
        // content from the server's returned failure JSON
        Ext.Msg.alert("Failed",op.request.scope.reader.jsonData["message"]);
    }
});
...