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 & jointure


Sujet :

Symfony PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Admin generator & jointure
    Bonjours,
    j'éprouve des difficultés pour faire des jointures dans mon panel admin(avec admin generator).
    J'utilise Symfony 1.2.9 & doctrine.
    On va commencé par mon model de donnée schema.yml
    Code schema.yml : 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
    SubDomain:
      columns:
        id:
        name:    
      relations:
        SubDomainFrom:
          foreignType: many
          alias: SubDomainFrom
          local: id
          foreign: sub_domain_from
          class: Redirect
        SubDomainTo:
          foreignType: many
          alias: SubDomainTo
          local: id
          foreign: sub_domain_to
          class: Redirect
    Redirect:
      columns:
        id:
        sub_domain_from:
        sub_domain_to:

    Globalement c'est ca, j'ai enlevé le superflus.
    Code generator.yml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    list:    
      layout:           stacked
      display:          [id, sub_domain_from]
      params:           %%id%% - %%SubDomainFrom%%
      table_method:     retriveRedirectList
    j'ai utilisé une table method pour limité le nombre de requête mais théoriquement ca change rien au problème en cas :
    Code RedirectTable.class.php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public function retriveRedirectList(Doctrine_Query $q)
      {
          $rootAlias = $q->getRootAlias();
          $q->leftJoin($rootAlias . '.SubDomain s');
          return $q;
      }

    Bon voila mon besoin et de remplacer le l'id que renvoie %%SubDomain%% par son nom.
    sur le tuto Joobeet ils explique :
    "Virtual" columns

    With this configuration, the %%category_id%% segment will be replaced by the category primary key. But it would be more meaningful to display the name of the category.

    Whenever you use the %% notation, the variable does not need to correspond to an actual column in the database schema. The admin generator only need to find a related getter in the model class.

    To display the category name, we can define a getCategoryName() method in the JobeetJob model class and replace %%category_id%% by %%category_name%%.

    But the JobeetJob class already has a getJobeetCategory() method that returns the related category object. And if you use %%jobeet_category%%, it works as the JobeetCategory class has a magic __toString() method that converts the object to a string.
    Je vous passe les blogs que j'ai pue lire.
    Je dois manqué de recule sur la techno le problème me semble un peu trivial quand même mais je n'arrive pas à le résoudre :/
    Y'a t'il une âme charitable pour m'expliquer les choses?

  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,

    Alors, il faut que tu modifies ton fichier lib/model/doctrine/SubDomainFrom.class.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function __toString()
    {
      return $this->getNom();
    }
    avec getNom() correspondant au nom de ton champ dans la table correspondante (cela peut être getTitle() ou getName() ).

    Si cela ne fonctionne pas, il faudra peut être que tu modifies également ton generator.yml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      display:          [id, sub_domain_from]
    par 
      display:          [id, SubDomainFrom]
    J'espère avoir bien compris ta demande :p
    symfony power user !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    tu as bien compris la question.
    Mais la solution donnée n'est pas valide.
    Il y a vraiment un problème qqpart :s
    Merci de ton aide

    Un peu plus de prescision quand même.
    quelque soit la variable que j'appel(%%SubDomain%%, %%SubDomainFrom%%, %%sub_domain_from%% ...) il ne passe pas par la methode __toString() et m'affiche l'id associée
    pour %%SubDomain%% par contre il me sort :
    <pre> Doctrine_Collection data : Array( 0 : Object(SubDomain) ) </pre>
    Il aurai pas du utilisé la methode magique __toString() la ?

    Edit : dans les filters par contre il affiche bien le nom tout seul comme un grand,
    Ya un problème d'interfacage chaise clavier dans l'histoire :@.

  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
    Dans ce cas, dans le fichier lib/model/doctrine/SubDomain.class.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      public function getSubDomainFromName()
      {
        return $this->getSubDomainFrom()->getNom();
      }
    et dans ton generator.yml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    display:          [id, SubDomainFromName]
    (enlève la ligne params pour voir ce que ça donne déjà)
    symfony power user !

Discussions similaires

  1. [1.x] Admin generator et jointure ?
    Par symfony30000 dans le forum Symfony
    Réponses: 13
    Dernier message: 07/12/2012, 15h25
  2. [1.x] Jointure Admin Generator
    Par hugo_dev dans le forum Symfony
    Réponses: 20
    Dernier message: 08/05/2011, 12h27
  3. [1.x] Admin generator - images administrables
    Par wadzat dans le forum Symfony
    Réponses: 3
    Dernier message: 30/05/2008, 15h39
  4. Réponses: 7
    Dernier message: 25/05/2008, 17h06
  5. [1.x] Champs i18n disabled par l'admin generator
    Par wadzat dans le forum Symfony
    Réponses: 1
    Dernier message: 22/05/2008, 14h51

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