Показать сообщение отдельно
  #1 (permalink)  
Старый 26.04.2013, 15:24
Аспирант
Отправить личное сообщение для constantant Посмотреть профиль Найти все сообщения от constantant
 
Регистрация: 30.07.2008
Сообщений: 87

form: Как обернуть данные на отправку?
есть панель xtype: form
она отправляет данные с полей ajax
результат отправки выглядит так:
Код:
method: save - это свойство добавляется отдельно оно не входит в список полей
name: Вася
age: 21
date: 21.12.2012
а мне нужно вот так:
Код:
method: save
data[name]: Вася
data[age]: 21
data[date]: 21.12.2012
При этом названия полей должны остаться прежними, то есть не data[name], а name.

сейчас заюзал вариант с getValues(false, true, false, true); при свойстве полей submitValue: false, но при этом формат даты отсылаемой на сервер всегда одинаков - 2012-12-21T00:00:00 так как getValues возвращает значение модели...




Моё решение выглядит так:
...
	onSaveButtonClick: function(button, e, eOpts){
		button.disable();
		var form = button.up('form');

		modifyNames(form, true); // тупа меняем название name'ов на нужные... :(
		form.submit({
			scope: form,
			url: '/action.php',
			params:{
				method:'save'
			},
			failure: function(form, action) {
				modifyNames(this, false);
				button.enable();
			},
			success: function(form, action) {
				modifyNames(this, false);
				button.enable();
			}
		});

		function modifyNames(f, action){
			f.getForm().getFields().each(function(item){
				if(item.submitValue && item.name){
					action ? wrapInData(item) : unwrapInData(item);
					if(item.multiSelect){
						action ? setAsArray(item) : unsetAsArray(item);
					}
				}
			});
		}
		function wrapInData(field){
			field.name = 'data[' + field.name + ']';
		}
		function unwrapInData(field){
			field.name = /^data\[([\w\d]+)\]/.exec(field.name)[1];
		}
		function setAsArray(field){
			field.name = field.name + '[]';
		}
		function unsetAsArray(field){}
	},
...

Последний раз редактировалось constantant, 14.05.2013 в 15:56. Причина: добавил вариант решения
Ответить с цитированием