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 :

Grille éditable avec objets et sous objets.


Sujet :

Ext JS / Sencha

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Par défaut Grille éditable avec objets et sous objets.
    Bonjour,

    Voila je cherche a faire une gille éditable avec des objets contenant des sous objets renvoyés en json.

    Je m'explique :

    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
     
    Ext.define('Resultat', {
        extend: 'Ext.data.Model',
        fields: [{
            name: 'id',
            type: 'int',
            useNull: true
        }, 'modejeu.libelle', 'typepartie.libelle', 'valeur'],
        validations: [{
            type: 'length',
            field: 'modejeu.libelle',
            min: 1
        }, {
            type: 'length',
            field: 'typepartie.libelle',
            min: 1
        }]
    });
    Ce qui n'est envoyé en json est donc un objet avec des propriétés dont 2 sont des objets (le mode de jeu et le type de partie).

    Partant de là, je n'ai pas de problème a l'affichage, mais quand je crée une entrée dans mon tableau éditable, j'obtiens (en php) un $data.

    Je fais un json decode, bref, avec un $data->valeur tout va bien, mais ... pour typepartie, je ne sias pas comment faire $data->typepartie.libelle ?? non php ne veut pas.

    Sauriez vous m'aider ?

    Merci d'avance.
    Nicolas.

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    en php il suffit de faire des objet ou des tableaux

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $data->typepartie = new object();
    $data->typepartie->libelle = "test";

    la fonction json_encode produi un json compatible (mais il dontient la définition de l'objet)

    avec les tableau
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $data["typepartie"] = new Array();
    $data["typepartie"]["libelle"] = "test";
    avec json_encode tu obtein
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    {"typepartie": {"libelle":"test"}}

    A+JYT

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Par défaut
    Justement je suis dans ce cas là. Je produit en php un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $data->typepartie->libelle = "test";
    Je fais un json encode. Et je l'utilise dans extjs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Ext.define('Resultat', {
        extend: 'Ext.data.Model',
        fields: [{
            name: 'id',
            type: 'int',
            useNull: true
        }, 'modejeu.libelle', 'typepartie.libelle', 'valeur']
    C'est peut être là le problème car je fais un "modejeu.libelle"...

    Et donc quand Extjs me renvoie les infos j'ai un $data qui est un stdCls (quelque chose comme ça).

    Et je vois en mode débug un propriété valeur (normal) et une propriété modejeu.libelle (et celle la avec le "point") je ne parviens pas a la récupérer.

  4. #4
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    il faut regarder la doc sur le data package de sencha car je ne suis pas sur qu'il accepte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Ext.define('Resultat', {
        extend: 'Ext.data.Model',
        fields: [{
            name: 'id',
            type: 'int',
            useNull: true
        }, 'modejeu.libelle', 'typepartie.libelle', 'valeur']
    je crois que dans ce cas là 'modejeu.libelle' est le nom d'un champ et non pas le champ libelle de l'objet node
    la solution est peut être de faire
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $data= new Array();
    $data["modejeu.libelle"] = "jeu";
    $data["typepartie.libelle"] = "type";
    $data["valeur"] = "valeur";
    au quel cas le json sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"modejeu.libelle":"jeu","typepartie.libelle":"type","valeur":"valeur"}

    A+JYT

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Par défaut
    Du coup, voila ce que j'envoie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"id":1,"valeur":5,"modejeu":{"id":1,"libelle":"Mode1","defaut":true},"typepartie":{"id":1,"libelle":"Type2","defaut":true}}
    Ce que je reçois en retour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"id":1,"modejeu.libelle":2,"typepartie.libelle":1,"valeur":"1"}
    Du coup en retour il n'y a plus de "niveau"... Pas pratique.

  6. #6
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    je crois que par défaut le data pakage de sencha ne supporte pas les sous structures
    il faut passer par des models avec des relation onetoone onetomany manytoone ou manytomany

    un user qui a un adresse ce défini avec un medèle user et un modèle adress avec une relation onetoone
    mais je ne pense pas que user puisse être une structure hérarchique

    voir la doc du package
    A+JYT

Discussions similaires

  1. probleme de link de fichiers objets compilés sous arm avec l'utilitaire ld
    Par Folkene dans le forum Bibliothèques, systèmes et outils
    Réponses: 0
    Dernier message: 17/11/2011, 14h59
  2. Souci avec l'objet "MonthCalendar" sous seven
    Par megamario dans le forum VB.NET
    Réponses: 6
    Dernier message: 13/09/2011, 09h56
  3. Problème avec un objet TDialog sous windows
    Par mohira dans le forum C++Builder
    Réponses: 1
    Dernier message: 10/12/2009, 17h01
  4. [XHTML 1.1] Balise objet avec un pdf sous firefox
    Par Sumoner dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 25/05/2009, 15h50
  5. [CR9]état ou sous état avec chemin de l'objet dans la base
    Par cdu dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 18/03/2005, 14h08

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