IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ext JS / Sencha Discussion :

Extjs 4 avec Ext.direct erreur "too much recursion"


Sujet :

Ext JS / Sencha

  1. #1
    Membre éclairé Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Points : 816
    Points
    816
    Par défaut Extjs 4 avec Ext.direct erreur "too much recursion"
    Bonjour,


    Je développe un intranet en php (symfony 1.4) et avec Extjs 4. J'utilise le plugin Extdirect pour symfony.


    Pas de problème pour faire communiquer Extjs avec symfony.
    Mon problème vient quand je souhaite poster un formulaire. J'ai fait un bouton submit qui me poste un formulaire tout simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    importDataUi = Ext.extend(Ext.Window, {
        title: 'Importer les données de Prod',
        width: 270,
        height: 169,
        layout: 'fit',
        modal: true,
        initComponent: function() {
            this.items = [
                {
                    xtype: 'form',
                    title: '',
                    flex: 1,
                    layout: 'fit',
                    bubbleEvents: '',
                    border: false,
                    id: 'formImport',
                    layoutConfig: {
                        align: 'center'
                    },
                    items: [
                        {
                            xtype: 'fieldset',
                            flex: 1,
                            defaultType: 'radio',
                            border: false,
                            defaults: {
                                anchor: '100%'
                            },
                            items: [
                                {
                                    id: 'environment',
     
                                    xtype: 'radiogroup',
                                    fieldLabel: 'Environnement',
                                    // Arrange radio buttons into three columns, distributed vertically
                                    columns: 1,
                                    vertical: true,
                                    items: [
                                        {boxLabel: 'Prod', name: 'environment', inputValue: '1', checked: true},
                                        {boxLabel: 'Pré-Prod', name: 'environment', inputValue: '2'},
                                        {boxLabel: 'TestBed', name: 'environment', inputValue: '3'}
                                    ]
                                },
                                {
                                    xtype: 'hidden',
                                    fieldLabel: 'Label',
                                    itemId: 'st_id',
                                    name: 'st_id',
                                    id: 'st_id'
                                },
                                {
                                    xtype: 'hidden',
                                    fieldLabel: 'Label',
                                    itemId: 'nameProject',
                                    name: 'nameProject',
                                    id: 'nameProject'
                                },
                                {
                                    xtype: 'hidden',
                                    fieldLabel: 'Label',
                                    itemId: 'depProject',
                                    name: 'depProject',
                                    id: 'depProject'
                                },
                                {
                                    xtype: 'hidden',
                                    fieldLabel: 'Label',
                                    itemId: 'Act',
                                    name: 'action',
                                    id: 'act',
                                    value: 1
                                }
                            ]
                        }
                    ],
                    bbar: {
                        xtype: 'toolbar',
                        buttonAlign: 'center',
                        items: [
                            {
                                xtype: 'button',
                                text: 'Ne pas Importer',
                                handler: function () {
                                    Ext.getCmp('act').setValue(0);
                                    Ext.getCmp('formImport').form.submit();
                                }
                            },
                            {
                                xtype: 'button',
                                text: 'Importer'
                            }
                        ]
                    },
                    api: {
                        // The server-side method to call for load() requests
    //                    load: Profile.getBasicInfo,
                        // The server-side must mark the submit handler as a 'formHandler'
                        submit: project.importProject
                    },
                    paramsAsHash: false
    //                url: 'http://192.168.56.99/esds/project/importProject',
    //                paramOrder: ['environment', 'st_id', 'nameProject', 'depProject', 'act']
                }
            ];
            importDataUi.superclass.initComponent.call(this);
        }
    });
    Malheureusement quand je fais un submit du formulaire, j'ai cette erreur qui apparaît dans firebug :
    too much recursion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (function(){var e=this,a=Object.protot...eate("Ext.XTemplate",j,g)}return j}});

    Auriez-vous une idée ?


    Merci d'avance.

  2. #2
    Membre éclairé Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Points : 816
    Points
    816
    Par défaut
    Bonjour à tous,

    J'ai trouver d'où venais le problème, c'est dans Symfony lors de la déclaration des entêtes de méthode, j'avais indiquer @extdirect-len 5, lorsque j'ai mis @extdirect-len 1, je n'ai plus eu de problème.

    Grâce à ça je viens de voir qu'aucun de mes champs de mon formulaire sont envoyés à mon serveur.

    Mais d'où cela peu-t-il venir ?

  3. #3
    Membre éclairé Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Points : 816
    Points
    816
    Par défaut
    Bonjour à tous,

    Lorsque j'utilise Ext.Direct, Mon AJAX appel ne m'a pas envoyé les données du formulaire.
    Avec "Ext.getCmp('formImport').getForm().getValue()"Je trouve les valeurs de ce formulaire.
    Quand je lance l'appelé avec l'url directement, tout fonctionne correctement, il envoie toutes les valeurs en post.

    Avez-vous déjà rencontrer le problème ?

  4. #4
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Bonjour,

    En voyant le terme Ajax, je pense à la synchronisation. C'est peut-être de là que vient le problème ?

  5. #5
    Membre éclairé Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Points : 816
    Points
    816
    Par défaut
    Je ne penses pas que ça vienne de la car j'ai aucun moyen de le configurer.

    En revanche, je compare de plus en plus ce que sencha propose comme exemple et ce que j'ai, et la j'ai pas du tout le même type de données envoyé.
    Voici l'exemple :
    http://dev.sencha.com/deploy/ext-4.0...rect-form.html

    Le problème venais tout simplement d'un paramètre manquant lors de la déclaration de mon api.

    Vu que j'utilise Symfony c'est dans le commentaire de la méthode, il faut ajouter cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /**
     * ...
     * @extdirect-formhandler true
     */
    dans la variable Ext.app.EXTDIRECT_API voila ce que ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ext.app.EXTDIRECT_API = {"url":"\/esds\/extdirect.php","type":"remoting","actions":{"project":[{"name":"importproject","len":0,"formHandler":true}],"liststore":[{"name":"st","len":1},{"name":"project","len":1}]}};
    quand il y a un formulaire il faut absolument mettre "formHandler":true sinon ça ne fonctionne pas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Google Maps] Too much recursion
    Par xdeslandes dans le forum APIs Google
    Réponses: 2
    Dernier message: 20/04/2015, 11h09
  2. [Dojo] "Too much recursion" sous FF uniquement
    Par anaon dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 30/06/2014, 10h29
  3. Too much recursion après un alert
    Par beegees dans le forum Général JavaScript
    Réponses: 31
    Dernier message: 07/02/2014, 07h32
  4. Too Much Recursion
    Par cookiewarrior dans le forum jQuery
    Réponses: 1
    Dernier message: 01/10/2010, 12h32
  5. [script.aculo.us] DragDrop too much recursion
    Par bruman dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 11/05/2009, 10h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo