Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > Ext JS / Sencha
Ext JS / Sencha Ext JS / Sencha Forum d'entraide sur les frameworks Ext JS et Sencha. Avant de poster : FAQ ExtJS / Sencha, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/05/2011, 14h27   #1
Membre chevronné
 
Avatar de kenny.kev
 
Homme
Inscription : janvier 2007
Messages : 573
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Indre et Loire (Centre)

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

Informations forums :
Inscription : janvier 2007
Messages : 573
Points : 687
Points : 687
Envoyer un message via MSN à kenny.kev
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 :
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 :
(function(){var e=this,a=Object.protot...eate("Ext.XTemplate",j,g)}return j}});

Auriez-vous une idée ?


Merci d'avance.
kenny.kev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 11h33   #2
Membre chevronné
 
Avatar de kenny.kev
 
Homme
Inscription : janvier 2007
Messages : 573
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Indre et Loire (Centre)

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

Informations forums :
Inscription : janvier 2007
Messages : 573
Points : 687
Points : 687
Envoyer un message via MSN à kenny.kev
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 ?
kenny.kev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 11h11   #3
Membre chevronné
 
Avatar de kenny.kev
 
Homme
Inscription : janvier 2007
Messages : 573
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Indre et Loire (Centre)

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

Informations forums :
Inscription : janvier 2007
Messages : 573
Points : 687
Points : 687
Envoyer un message via MSN à kenny.kev
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 ?
kenny.kev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 11h17   #4
Responsable JavaScript & AJAX

 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 686
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2008
Messages : 2 686
Points : 5 757
Points : 5 757
Bonjour,

En voyant le terme Ajax, je pense à la synchronisation. C'est peut-être de là que vient le problème ?
__________________
Elen Poukram - Isegoria - Sandawe
vermine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 15h52   #5
Membre chevronné
 
Avatar de kenny.kev
 
Homme
Inscription : janvier 2007
Messages : 573
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Indre et Loire (Centre)

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

Informations forums :
Inscription : janvier 2007
Messages : 573
Points : 687
Points : 687
Envoyer un message via MSN à kenny.kev
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 :
1
2
3
4
/**
 * ...
 * @extdirect-formhandler true
 */
dans la variable Ext.app.EXTDIRECT_API voila ce que ça donne :
Code :
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.
kenny.kev est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h11.


 
 
 
 
Partenaires

Hébergement Web