2010-05-04 13 views
1

En regardant le code source de Action.Submit, j'essaie de comprendre où ext est en train d'ajouter les champs du formulaire aux paramètres.Extjs Form Action Submit - Remplacement personnalisé?

Au lieu d'envoyer chaque champ comme paramètre séparé, je veux envoyer quelque chose comme:

formObj: {field1: valeur, field2: valeur}

Actuellement, chacune de ces valeurs sont simplement ajoutées à la liste des paramètres avec tout custom/baseParams.

Où ces champs de formulaire sont-ils ajoutés afin que je puisse changer ce comportement?

Merci.

Répondre

0

Je ne suis pas sûr de ce que votre remplacement doit ressembler, mais vous voudrez probablement regarder Ext.Ajax.request() (dans Core/Connection.js). Lors de la publication d'un formulaire, les champs sont sérialisés, dans ce bloc de code:

  if(form = Ext.getDom(o.form)){ 
       url = url || form.action; 
       serForm = Ext.lib.Ajax.serializeForm(form);     
       p = p ? (p + '&' + serForm) : serForm; 
      } 
+0

Gracias. Ya, à l'intérieur de l'Action.Submit, j'ai trouvé que le formulaire lui-même était passé dans la requête Ext.Ajax, et cela a du sens maintenant. Je peux donc remplacer la classe Action à ce niveau pour vérifier si je souhaite ou non soumettre le formulaire. – Scott

0

Si vous voulez vraiment suivre le processus de création de la liste de paramètres, vous pouvez vous référer à Ext.form.Action.getParams.

Vous devriez également considérer Ext.form.BasicForm.getValues car il retourne exactement le résultat que vous voulez, le seul problème est que vous aurez besoin de l'envoyer manuellement, par exemple. en utilisant Ext.Ajax.request.

+0

ya, je n'ai déjà aucun problème à emballer mes propres paramètres et à les envoyer. Le problème est que tous les autres paramètres polluent la requête, en plus de mon objet personnalisé. Action.getParams se réfère uniquement aux baseParams et aux customParams. Pas aux champs de formulaire. – Scott