I can't say what the purpose is, but probably mostly to be simpler and more integrated with the basic 'app' model they have.
You can get the '&foo=bar' part to come through the Router into the controller by changing 'Ext.util.Route::createMatcherRegex' to allow the characters in a trailing (potentially ':rest' ) attribute and use that with a route like:
Code:
map.connect(':controller/:action/:rest');
for 'localhost/#users/search/type=3"e=john' or change the last slash to a '&' and you could use 'localhost/#users/search&type=3"e=john' which might be a bit more standard.
Code:
createMatcherRegex: function(url) {
var paramsInMatchString = this.paramsInMatchString,
length = paramsInMatchString.length,
i, cond, matcher;
for (i = 0; i < length; i++) {
cond = this.conditions[paramsInMatchString[i]];
if (i == length - 1) {
matcher = Ext.util.Format.format("({0})", cond || "[%a-zA-Z0-9\\_\\s,\\&\\=]+");
} else {
matcher = Ext.util.Format.format("({0})", cond || "[%a-zA-Z0-9\\_\\s,]+");
}
url = url.replace(new RegExp(paramsInMatchString[i]), matcher);
}
return new RegExp("^" + url + "$");
}