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 et jointure ? [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Points : 101
    Points
    101
    Par défaut Admin generator et jointure ?
    Bonjour à tous,

    je souhaiterai savoir comment peut on effectuer des jointures avec l'admin generator? comment ça ce paramètre dans generator.yml? car pour le moment je n'ai que ma table avec laquelle j'ai généré l'admin.

    De plus, comment peut on modifier les templates de l'admin generator (le html et non le css) alors que les fichiers indexsuccess.php et editsucces.php sont dans le cache de symfony??

    merci pour votre aide

  2. #2
    Membre averti Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Points : 384
    Points
    384
    Par défaut
    Bonjour,

    Pour effectuer un join lors de la requête de ta liste d'admin generator, il faut modifier ton generator.yml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    list:
      table_method: yourMethod
    Puis dans YourModelTable.class.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      public function yourMethod(Doctrine_Query $q)
      {
        $rootAlias = $q->getRootAlias($q);
        $q->leftJoin($rootAlias.'.YourJoinTable c');
        return $q;
      }
    Ensuite, pour utiliser les templates générés par l'admin generator, il te suffit de copier le fichier du cache nécessaire dans le répertoire template de ton module (par exemple cache/backend/dev/modules/auto_yourModule/templates/_form_header.php vers apps/backend/modules/yourModule/templates) et de le modifier à ta guise.

    ps : saloper... de message qui a disparu après validation ...
    symfony power user !

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

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Points : 101
    Points
    101
    Par défaut
    ok pour tous
    effectivement en collant les templates du cache dans mon module ça marche nickel.

    Ensuite j'ai créé une méthode pour effectuer une requête avec jointure comme tu me là expliqué mais après comment je fait pour l'afficher dans le frontend? car la je n'ai que la table principale d'affiché et je n'arrive pas à afficher les autres champs même en modifiant le generator.yml avec l'option display:[monchamp]

    merci

  4. #4
    Membre averti Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Points : 384
    Points
    384
    Par défaut
    Nous avons 2 tables liées :
    - User (avec nom et prenom comme champs)
    - Infos (avec adresse comme champ)
    On affiche la liste des Users et on veut afficher pour chacun leur adresse.

    Ce qu'il est possible de faire dans le fichier generator.yml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    display: [nom, prenom, Adresse]
    - nom et prenom viennent de la table principale (User)
    - Adresse doit venir de la table jointe (Infos)

    Dans lib/model/doctrine/user.class.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function getAdresse()
    {
      return $this->getInfos()->adresse;
    }
    Quand tu indiques un champ avec une majuscule dans le tableau des display, il essaye d'appeler la fonction correspondante.
    Tu peux aussi faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    display: [nom, prenom, _adresse]
    Dans apps/yourApp/modules/user/templates/_adresse.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $user->getInfos()->adresse ?>
    symfony power user !

  5. #5
    Membre averti Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Points : 384
    Points
    384
    Par défaut
    Ah, tu as une autre solution aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    display: [nom, prenom, Infos]
    et dans lib/model/doctrine/infos.class.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function __toString()
    {
      return $this->adresse;
    }
    Normalement, l'admin gen utilisera la méthode toString de Infos (étant donné que c'est une table liée)
    symfony power user !

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Points : 101
    Points
    101
    Par défaut
    ça c'est dans le cas ou la clé étrangère et dans la table user?
    car dans mon cas la clé étrangère est dans la table infos

    j'ai essayé les trois méthode et aucune ne marche

  7. #7
    Membre averti Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Points : 384
    Points
    384
    Par défaut
    Peux-tu mettre le code de ton schema.yml stp (juste les deux tables et la liaison) ?
    symfony power user !

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Points : 101
    Points
    101
    Par défaut
    voila mon schema.yml
    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
    hardware:
      columns:
        idHardware:
          type: integer(4)
          primary: true
          unsigned: true
          notnull: true
          autoincrement: true
        serialNumber:
          type: string(45)
          unique: true
          notnull: true
        dateProd:
          type: timestamp
          notnull: true
     
     
    hwsupportlog:
      columns:
        idHWSupportLog:
          type: integer(4)
          primary: true
          unsigned: true
          notnull: true
          autoincrement: true
        date:
          type: timestamp
          notnull: true
        description:
          type: clob(65535)
          notnull: true
        hardware_idHardware:
          type: integer(4)
          unsigned: true
          notnull: true
      relations:
        hardwareIdHardware:
          class: hardware
          local: hardware_idHardware
          foreign: idHardware
          foreignAlias: hwsupportlogs

  9. #9
    Membre averti Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Points : 384
    Points
    384
    Par défaut
    Tu veux afficher la liste de quelle table ?
    symfony power user !

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Points : 101
    Points
    101
    Par défaut
    en faite j'affiche la table hardware et j'aimerai en même temps afficher les réparations effectué, dans ce cas la date de la dernière réparations donc le champ date

  11. #11
    Membre averti Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Points : 384
    Points
    384
    Par défaut
    En fait, tu travailles sur une relation one to many. C'est donc là le problème :p

    Je ferais donc :
    - dans generator.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    display: [serialNumber, dateProd, _dateLastRepair]
    - dans apps/backend/modules/hardware/templates/_dateLastRepair.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php if(count($hardware->getHwsupportlogs()) > 0): ?>
    <?php foreach($hardware->getHwsupportlogs() as $repair): ?>
      <?php if($repair->date > (isset($date) ? $date: '0000-00-00 00:00:00')): ?>
        <?php $date = $repair->date ?>
      <?php endif ?>
    <?php endforeach; ?>
    <?php echo $date ?>
    <?php endif; ?>
    Ca devrait marcher mais je pense que quelque chose de plus propre est possible. Si j'ai le temps, je regarderai.
    symfony power user !

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Points : 101
    Points
    101
    Par défaut
    oui c'est le problème
    après je souhaite mettre une fiche infos, avec toutes les réparations effectués sur le produit.
    Je vais essayer ta méthode

    Encore un grand merci pour ton aide

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Octobre 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Help !!!!
    Bonjour à tous, j'ai la même demande à vous faire , car je n'arrive pas à effectuer votre tuto.

  14. #14
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    bonjour,
    de quel tutoriel tu parles? t'as vu que le sujet date de 2010?

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

Discussions similaires

  1. [1.x] Jointure Admin Generator
    Par hugo_dev dans le forum Symfony
    Réponses: 20
    Dernier message: 08/05/2011, 13h27
  2. [1.x] Admin generator & jointure
    Par Onime Records dans le forum Symfony
    Réponses: 3
    Dernier message: 02/10/2009, 17h53
  3. [1.x] Admin generator - images administrables
    Par wadzat dans le forum Symfony
    Réponses: 3
    Dernier message: 30/05/2008, 16h39
  4. Réponses: 7
    Dernier message: 25/05/2008, 18h06
  5. [1.x] Champs i18n disabled par l'admin generator
    Par wadzat dans le forum Symfony
    Réponses: 1
    Dernier message: 22/05/2008, 15h51

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