2015-03-15 2 views
3

Я хочу передать дополнительные данные фильтра в мою службу REST PHP, а именно набор значений из формы. Форма представляет собой набор флажков с тем же name: 'relations'.Прокси-сервер ExtJS неправильно строит запрос GET с массивом в extraParams

Чтобы сделать это, я следующее:

var relationTypes = [], 
    objectsTreeStore = Ext.getCmp('objectsTreeGrid').getStore(); 
if('relations' in this.getFilterForm().getValues()) { 
    relationTypes = typeof this.getFilterForm().getValues().relations ==='string' ? [this.getFilterForm().getValues().relations] : this.getFilterForm().getValues().relations; 
} 
objectsTreeStore.getProxy().extraParams.relations = relationTypes; 
objectsTreeStore.load(); 

В качестве примера, значение переменной relationTypes согласно console.log является ["100_200", "110_200"].

Но URL-адрес запроса GET: http://10.161.28.111:81/objectstree/get?branch_id=2&relations=100_200&relations=110_200&node=root.

PHP interprent эти данные, как

Array 
(
    [branch_id] => 2 
    [relations] => 110_200 
    [node] => root 
) 

Я думаю, что URL должен быть как http://10.161.28.111:81/objectstree/get?branch_id=2&relations[]=100_200&relations[]=110_200&node=root.

Как я могу решить эту проблему?

ответ

1

Вы пытались называть свои галочки name: 'relations[]'?

Вы также можете использовать контейнер CheckboxGroup для правильного поведения. Документы - http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.layout.container.CheckboxGroup

+0

Я использую 'checkboxGroups' в моей форме. 'name: 'relations []' 'работал, но мне кажется, что это очень сложное решение, более того, я не понимаю, как я могу получить доступ к этому значению, если это необходимо. Например, 'this.getFilterForm(). GetValues ​​(). Relations []' wont work. –

+0

Да, это уродливо. В любом случае функция getValues ​​возвращает массив, поэтому вы можете получить такие значения, как this.getFilterForm(). GetValues ​​() ['relations []'] ' –