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

Symfony PHP Discussion :

Convertir un id du backend


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 62
    Par défaut Convertir un id du backend
    Bonjour ,

    J'ai une relation entre des tables dans mon schema qui me permettent de repertorier les elements d'un menu pour une pizzeria , le soucis c'est que dans le backend lorsque je fais new ou edit je récupère bien les noms de mes entree_id salades_id etc .. mais dans list cela ne m'affiche pas les noms mais les id comment faire pour remplacer les id par les nom dans list ?

    Voici mon schema :

    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
     
    Menu:
      columns:
        id: { type: integer,  primary: true , autoincrement: true }
        produit : { type: integer }
        nom: { type: string }
        type: { type: string }      
        entree_id : { type: integer (10) }
        salade_id : { type: integer (10) }    
        pizza_id : {type : integer(10) }
        dessert_id : { type : integer(10) }
        boisson_id : { type: integer (10)}
        prix: { type: string  } 
     
    Entree : 
      columns :
        id: { type : integer , primary : true , autoincrement : true }
        nom : { type : string }
        description : { type : string }
        prix : { type : integer }
        type : { type : string }
      relations:
        Menu: { onDelete : CASCADE, local: id , refClass: Menu, foreign : entree_id , foreignAlias : Entrees }
     
    Boisson : 
      columns :
        id: { type : integer , primary : true , autoincrement : true }
        nom : { type : string }
        description : { type : string }
        prix : { type : integer }
      relations:
        Menu: { onDelete : CASCADE, local: id , refClass: Menu, foreign : boisson_id, foreignAlias : Boissons }
     
    Pizza : 
      columns :
        id: { type : integer , primary : true , autoincrement : true }
        nom : { type : string }
        description : { type : string }
        prix : { type : integer }
      relations:
        Menu: { onDelete : CASCADE, local: id , refClass: Menu, foreign : pizza_id, foreignAlias : Pizzas }
     
    Salades :
      columns :
        id: { type : integer , primary : true , autoincrement : true }
        nom : { type : string }
        description : { type : string }
        prix : { type : integer }
        type : { type : string }
      relations:
        Menu: { onDelete : CASCADE, local: id , refClass: Menu, foreign : salade_id, foreignAlias : Saladess }
     
    Dessert :
      columns :
        id: { type : integer , primary : true , autoincrement : true }
        nom : { type : string }
        description : { type : string }
        prix : { type : integer }
        type : { type : string }
      relations:
        Menu: { onDelete : CASCADE, local: id , refClass: Menu, foreign : dessert_id, foreignAlias : Desserts }
     
    News:
      columns:
        id: { type: integer,  primary: true , autoincrement: true }
        type: { type: integer ,  notnull: true }
        description:  { type: string ,  notnull: true }
     
    Newsletter:
      columns:
        id: { type: integer,  primary: true , autoincrement: true }
        nom: { type: string ,  notnull: true }      
        email: { type: string ,  notnull: true }
     
    Produit:
      columns:
        id: { type: integer,  primary: true , autoincrement: true }
        nom: { type: string ,  notnull: true }
        logo: { type: string ,  notnull: true }
        description: { type: string ,  notnull: true }
        prix: { type: float ,  notnull: true }
        type: { type: string ,  notnull: true }
     
    Categories:
      columns:
        id: { type: integer,  primary: true , autoincrement: true }      
        nom: { type: string ,  notnull: true }
        type: { type: integer,  notnull: true }
     
    Magasins:
      columns:
        id: { type: integer,  primary: true , autoincrement: true }      
        nom: { type: string ,  notnull: true }
        ville : { type: string ,  notnull: true }
        numero: { type: integer,  notnull: true }
        adresse : { type: string ,  notnull: true }

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Niveau schéma, je pense que les tables entree, pizza, desert, boisson... auraient gagnée à être mutualisées.

    Pour ton problème, modifie le modèle de l'entité (table) dans li/modelr/doctrine et tu rajoutes une méthode __toString() qui retourne ce que tu veux voir afficher pour l'enregistrement.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 62
    Par défaut
    Citation Envoyé par Michel Rotta Voir le message
    Niveau schéma, je pense que les tables entree, pizza, desert, boisson... auraient gagnée à être mutualisées.

    Pour ton problème, modifie le modèle de l'entité (table) dans li/modelr/doctrine et tu rajoutes une méthode __toString() qui retourne ce que tu veux voir afficher pour l'enregistrement.
    Merci michel , mais j'ai déjà utilisé la méthode magique toString , j'utilise maintenant les foreign alias pour faire des getter sur mes elements et malgré le __toString j'obtient ca :

    <pre> Doctrine_Collection data : Array( 0 : Object(Entree) ) </pre> <pre> Doctrine_Collection data : Array( 0 : Object(Dessert) ) </pre>

    Normalement cela devrait me retourner les noms je pige plus rien la

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Je ne comprend pas ta demande.

    Si tu utilises des widget select, le __toString() est la méthode à utiliser.

    Si tu utilises autre choser, il va falloir être plus précis dans la demande. Un peu de code qui pose problème, d'où il vient serait aussi intéressant que le message d'erreur qu'il produit.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 62
    Par défaut
    En fait , je n'utilise aucun widget en particulier , c'est mon formulaire qui est auto généré dans mon backend et qui me génère un select a cause de mon schéma relationnel.

    Lorsque je suis en mode new / edit , je récupère bien les noms associés à mes xxxxx_id grace à la méthode toString getnom (avec nom un champ de ma table ). Le soucis est qu'en mode List ( donc generator.yml ) quand j'affiche dans mon display xxxxx_id je ne récupère que l'id la méthode __toString n'étant pas prise en compte , j'ai verifié dans le Jobeet et c'est tout à fait normal. Donc j'utilise les alias comme dans le jobeet afin d'y afficher les noms associés , hors au lieu d'obtenir les noms j'obtient :
    <pre> Doctrine_Collection data : Array( 0 : Object(Entree) ) </pre> <pre> Doctrine_Collection data : Array( 0 : Object(Dessert) ) </pre>

    J'espère que tu pourra m'aider

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Tu peux mettre ton generator.yml ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/06/2004, 13h07
  2. [QuickReport] convertir les états en RAVE
    Par El blérot dans le forum Rave
    Réponses: 5
    Dernier message: 18/03/2004, 18h05
  3. Réponses: 3
    Dernier message: 02/07/2003, 17h24
  4. [TP]Convertir Delphi en BP7
    Par Christophe Fantoni dans le forum Turbo Pascal
    Réponses: 28
    Dernier message: 19/11/2002, 18h30
  5. convertir un nom long (win32) en format dos (8+3)
    Par kylekiller dans le forum Langage
    Réponses: 2
    Dernier message: 30/08/2002, 14h34

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