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 :

[Admin Generator] Modification d'une entrée et clés étrangères [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut [Admin Generator] Modification d'une entrée et clés étrangères


    J'ai un petit problème avec l'admin generator de symfony (Doctrine).

    Quand j'utilise un panneau entièrement automatique (créé avec la ligne de commande et puis aucune modification) et des clés étrangères (définies dans mon schéma, modèles dont la fonction __toString() a été redéfinie), si je sélectionne un élément dans la liste qui se crée lors de la création d'un nouvel item, il n'est jamais enregistré.

    En code, ça donne :
    schéma
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    table: 
      columns: 
        os: integer
      relations:
        os: 
          foreign: id
          local: os
     
    os: 
      columns: 
        name: string(63)
    generator.yml du module incriminé
    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
    generator:
      class: sfDoctrineGenerator
      param:
        model_class:           table
        theme:                 admin
        non_verbose_templates: true
        with_show:             false
        singular:              ~
        plural:                ~
        route_prefix:          table
        with_doctrine_route:   true
        actions_base_class:    sfActions
     
        config:
          actions: ~
          fields:  ~
          list:    ~
          filter:  ~
          form:    ~
          edit:    ~
          new:     ~
    lib/model/doctrine/os.class.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class os extends Baseos
    {
    	public function __toString()
    	{
    		return $this->name;
    	}
    }
    Le problème : en essayant d'insérer un nouvel élément dans le module précité, j'ai une liste déroulante pour mes OS mais, peu importe celui que je sélectionne, en cliquant sur Save, cet élément n'ets pas sauvegardé en bdd...

    Aurais-je loupé quelque chose ?

    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    Histoire d'être sûr de comprendre le problème :
    dans ton formulaire de création (new), lorsque tu entres les informations et clique sur Save, tout s'enregistre en base de données sauf l'id de ta clé étrangère "os" ?

    Remarque : attention à tes définitions dans ton schema.yml. "os" correspond à :
    - ton objet "os" ;
    - ton id dans "table" ;
    - ton nom de relation.

    Ca peut éventuellement amener à des conflits. En tout cas, ça amènera forcément tôt ou tard à des erreurs ! Mieux vaut les renommer en : os, os_id et Os.

    (t'as le droit de créer une table du nom "table" ?)

  3. #3
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Citation Envoyé par bilbonec Voir le message
    Histoire d'être sûr de comprendre le problème :
    dans ton formulaire de création (new), lorsque tu entres les informations et clique sur Save, tout s'enregistre en base de données sauf l'id de ta clé étrangère "os" ?
    Exact.

    Citation Envoyé par bilbonec Voir le message
    Ca peut éventuellement amener à des conflits. En tout cas, ça amènera forcément tôt ou tard à des erreurs ! Mieux vaut les renommer en : os, os_id et Os.
    Je tente ça et je te dis quoi . Quand on utilise une option pour mettre les relations automatiquement, ça ne génère pas des noms dans ce genre-là ?

    Citation Envoyé par bilbonec Voir le message
    (t'as le droit de créer une table du nom "table" ?)
    En fait, c'est plus pour l'exemple, j'ai changé le nom de la table, je n'ai jamais testé ce schéma précisément (ne sachant pas précisément ce que je peux mettre en public ou non, je préfère anonymiser un minimum).

    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  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
    Ton schéma tel que je l'aurais écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    table: 
      columns: 
        os_id: integer
      relations:
        os: 
          foreignAlias: tables
     
    os: 
      columns: 
        name: string(63)
    <nomDeTable>_id est le nom par défaut pour une clef extérieur.

    ForeignAlias est le nom de la liaison de l'autre côté, donc pour avoir les tables liées depuis un objet os, on va avoir : $os->tables() qui va retourner un doctrine_collection.

    Pour ton problème spécifique, et avec ton schéma comme le miens, il est fonctionnel, à la condition de rajouter un champs à la table table, pour que cela soit viable (dans la liste).

    Je pense donc qu'il y a des chances que ton problèmes vienne du schéma (plus particulièrement des relations), donc MP si tu ne veux pas l'afficher.

    Ta procédure décrite est "parfaite".

  5. #5
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    J'ai d'abord essayé de changer le nom de la colonne os en os_id, dans mon schéma et dans ma base de données MySQL. Le problème, c'ets que mon application symfony me renvoie toujours des erreurs 502 (d'autres applications sur le même serveur, SQL compris, fonctionnent parfaitement pendant ce temps, sans utiliser la table incriminée ; en "oubliant" une des deux parties, j'ai bien des erreurs de la part de Doctrine comme quoi il y a un truc qui va pas - colonne manquante). Je ne parle ici que de la partie Admin Generator, tous caches vidés, avec le contrôleur de développement.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    J'ai d'abord essayé de changer le nom de la colonne os en os_id, dans mon schéma et dans ma base de données MySQL
    Pourquoi tu le changes dans ta DB ? Elle n'est pas censée être régénérée par Doctrine ?

    Sinon, je ne connais pas exactement tout ce qui est déduit par Doctrine en respectant les règles de nommage (comme l'id utilisé depuis le nom de la relation, qui, je crois, doit posséder une majuscule), du coup je préfère en général être un peu plus verbeux pour éviter les erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    table: 
      columns: 
        os_id: integer
      relations:
        Os:
          class: os
          local: os_id
          foreign: id
          foreignAlias: Tables
    Peut-être ton erreur vient-elle de là.

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

Discussions similaires

  1. [1.x] admin generator - changer dynamiquement une classe
    Par phpestpuissant dans le forum Symfony
    Réponses: 1
    Dernier message: 20/03/2012, 09h28
  2. Réponses: 3
    Dernier message: 06/12/2010, 20h13
  3. Bug a la modification d'une entrée dans table
    Par porci82 dans le forum VBA Access
    Réponses: 1
    Dernier message: 20/06/2007, 14h28
  4. VBA : modification d'une entrée dans une table
    Par Thibaut_Dupont dans le forum Access
    Réponses: 6
    Dernier message: 13/07/2006, 15h24
  5. [SQL] pb de modification d'une entrée de ma bd
    Par auryn111 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/09/2005, 10h54

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