2010-09-24 4 views
1

Est-il possible de modifier la structure de l'URL créée par ExtJS lorsque les baseParams sont envoyés au serveur via dataUrl?Envoi de paramètres avec ExtJS TreeLoader

Par exemple, tel qu'il est le réglage des baseParams comme suit:

baseParams: { 
    category: 2 
}, 
dataUrl:'testclass.php' 

créerait la chaîne de requête suivante:

testclass.php?category=2 

Ce que je veux faire est de récupérer les données d'une manière reposante comme ceci:

testclass/category/2 

Cette structure d'URL est-elle possible avec ExtJS? Merci.

Répondre

1

Vous pourriez bien sûr écrire votre propre TreeLoader, ce serait le seul moyen de l'IIRC.

+0

Je pensais autant, merci. –

1

Je reconnais que ce n'est pas une solution idéale, et que cette question est un peu vieux, mais ce code a fonctionné assez bien pour moi dans ce lieu:

Ext.override(Ext.tree.TreeLoader, { 
    requestData : function(node, callback, scope) { 
     var originalDataUrl = this.dataUrl; 
     this.dataUrl += "/" + this.getParams(node).node; 
     if(this.fireEvent("beforeload", this, node, callback) !== false){ 
      if(this.directFn){ 
       var args = this.getParams(node); 
       args.push(this.processDirectResponse.createDelegate(this, [{callback: callback, node: node, scope: scope}], true)); 
       this.directFn.apply(window, args); 
      }else{ 
       this.transId = Ext.Ajax.request({ 
        method:this.requestMethod, 
        url: this.dataUrl||this.url, 
        success: this.handleResponse, 
        failure: this.handleFailure, 
        scope: this, 
        argument: {callback: callback, node: node, scope: scope} 
        //params: this.getParams(node) 
       }); 
      } 
     }else{ 
      // if the load is cancelled, make sure we notify 
      // the node that we are done 
      this.runCallback(callback, scope || node, []); 
     } 
     this.dataUrl = originalDataUrl; 
    } 
}); 

Vraiment, le seul grand inconvénient est l'absence totale de params quand vous descendez cette route. Dans mon cas, j'avais seulement besoin de l'ID de nœud. Mais cela devrait au moins vous donner un bon point de départ si vous voulez remplacer votre méthode de chargement! :)

+0

Bravo pour cela, je n'ai pas encore eu l'occasion d'ajouter cette fonctionnalité et cela va deffo être utile pour cela. Ta. –