With a REST proxy, rather than only allowing us to append a respective model ID, I would have expected to be able to define multiple variables in the URL. This is also sometimes necessary for standard AJAX URLs. I created a proxy override that uses a template to generate the URL. I'm using a standard Ext.Template, because it seemed an Ext.XTemplate seemed like overkill; although, the code could easily be modified to accomodate that.
I'm posting the snippet here for anyone interested in doing the same thing. Any ideas for improvement are more than welcome.
Code:
Ext.define('MyNamespace.data.proxy.Ajax', {
override: 'Ext.data.proxy.Ajax',
buildUrl: function(request){
//Create a template with the URL and replace the variables
var url = this.getUrl(request),
urlTemplate = new Ext.Template(url),
params = request.getParams(),
newUrl = urlTemplate.apply(params);
//Remove variables embedded into URL
Ext.Object.each(params, function(key, value){
var regex = new RegExp('{'+key+'.*?}');
if(regex.test(url)){
delete params[key];
}
});
request.setUrl(newUrl);
this.callParent([request]);
}
});
Now you could have a url like "/service/model/{id}/update"; and call store.getProxy().setExtraParam('id', 1);
Additionally, you could do something like "/service/model/{id}/{method}" and call store.getProxy().setExtraParams({id: 1, method: 'update'});