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

Doctrine2 PHP Discussion :

[StofDoctrineExtensionsBundle] [Tree] Comment l'afficher ?


Sujet :

Doctrine2 PHP

  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 776
    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 776
    Par défaut [StofDoctrineExtensionsBundle] [Tree] Comment l'afficher ?


    Je me heurte à un problème avec cette extension : comment afficher l'arbre au complet ?

    Si je demande, c'est que je n'aimerais pas du tout devoir tout réimplémenter moi-même, même si c'est assez simple à faire (récupérer les racines ; pour chacune, récupérer les enfants, récursion sur ces enfants jusqu'à la fin des temps), il me semble qu'il doit y avoir une fonction pour le faire (pour avoir une sortie du genre http://gediminasm.org/test/view-tree).

    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
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut
    Salut ,
    Pour pouvoir afficher la liste des itinéraires de votre site vous pouvez tapez cette commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php app/console router:debug


    Merci
    __________________
    ---
    "Tous est possible"
    http://symfony2.MadevWeb.com

  3. #3
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 776
    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 776
    Par défaut
    ? Ça va me renvoyer la liste des routes disponibles, pas du tout l'arbre stocké !
    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
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut
    Bonsoir;Vous pouvez utiliser le KnpMenuBundle voici un demo
    http://ipsum.knplabs.com/knplabs-menu

    dans la documentation il existe une partie qui concerne menu Tree

    j’espère que c'est ce que vous cherchez .


    Merci
    __________________
    ---
    "Tous est possible"
    http://symfony2.MadevWeb.com

  5. #5
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 776
    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 776
    Par défaut
    Non, non, toujours pas... J'ai un arbre réalisé avec les GedmoDoctrineExtensions et je veux l'afficher, sans menu ni rien d'autre, juste afficher l'arborescence.
    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 éclairé
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Par défaut


    J'ai beau chercher ... je ne vois rien qui se rapporte à la récupération de l'arbre au complet de manière immédiate.

    par contre, sur la page http://www.doctrine-project.org/blog...xtensions#tree dans la catégorie "Using TreeNodeRepository functions" ils montrent un appel à la méthode "getPath()" du repository ... elle peut peut-être te servir.

    Cela dit dans les commentaires du blog relatif à cet extension, quelqu'un parle du rendering de l'arbre ... et il passe par une méthode faite maison ...

    J'ai donc bien peur qu'il faille que tu fasses tout à la main ... (une belle fonction récursive finalement)

  7. #7
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 776
    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 776
    Par défaut
    Non, getPath() ne me sera pas du tout utile ici, c'est pour récupérer les parents d'un élément (donc pour les breadcrumbs, notamment - à propos, il faudrait voir comment gérer ça proprement...).

    Le problème qui me vient avec une telle fonction récursive, c'est : comment minimiser les requêtes en base ? Soit je fais une requête pour récupérer les racines, puis une requête sur chaque racine pour récupérer les enfants et je laisse la machine faire ; soit une seule requête pour tout récupérer dans une forme intéressante, mais je sèche pour la pondre .
    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 !

  8. #8
    Membre éclairé
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Par défaut
    Citation Envoyé par dourouc05 Voir le message
    soit une seule requête pour tout récupérer dans une forme intéressante, mais je sèche pour la pondre .

    Pour t'aider à ce niveau là, il nous faudrait plus d'infos sur la structure de ta base (enfin tout du moins sur ton organisation de l'arbre : 1 seule table ? organisation des keys ...).

    Dans de telles situations (je ne connais pas les contraintes de ton projet) et suivant les quantités d'éléments gérés il peut être intéressant d'avoir une table qui liste pour un élément l'ensemble de ses parents ... A partir de ça une seule requête est envisageable.

    Mais sinon tu peux aussi jeter un oeil ici : http://sqlpro.developpez.com/cours/arborescence/
    Mais là ... on sort du contexte sf2 & doctrine2

    Bon courage

  9. #9
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 776
    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 776
    Par défaut
    Citation Envoyé par Bleys Voir le message
    Dans de telles situations (je ne connais pas les contraintes de ton projet) et suivant les quantités d'éléments gérés il peut être intéressant d'avoir une table qui liste pour un élément l'ensemble de ses parents ... A partir de ça une seule requête est envisageable.
    J'aurai au plus un millier de catégories, soit pas énorme à gérer pour le serveur (avec une dose de cache, on ne devra effectuer qu'une seule fois toutes les lunes la grosse quantité de requêtes ; au pire, on peut le faire quand on crée une catégorie). Donc pas besoin de sortir une telle arme de destruction massive.

    Citation Envoyé par Bleys Voir le message
    Mais sinon tu peux aussi jeter un oeil ici : http://sqlpro.developpez.com/cours/arborescence/
    Mais là ... on sort du contexte sf2 & doctrine2
    Il n'empêche que c'est un lien très intéressant, qui permet enfin de comprendre l'utilité des champs left et right dans les tables des arbres !

    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 !

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2008
    Messages : 186
    Par défaut
    Sur son blog l'auteur laisse en commentaire sa fonction:

    for tree building use recursion, in my blog its:
    Code php : 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
    private function _makeTree($nodes, $repo) {
        $html = $this->view->getHelper('html');
        $result = '<ul>';
        foreach($nodes as $node) {
            $linkUp = $html->link('Up', '/test/move-node/id/'.$node->getId().'/type/up');
            $linkDown = $html->link('Down', '/test/move-node/id/'.$node->getId().'/type/down');
            $result. = '<li>'.$node->getTitle().'   '.$linkUp.' '.$linkDown;
            if ($repo->childCount($node, true)) {
                $result. = $this->_makeTree(
                $repo->children($node, true), $repo);
            }
            $result. = '</li>';
        }
        $result. = '</ul>';
        return $result;
    }
    Après des algo comme ça y en a plein sur google ^^ si tu connais la récursivité ça ira, si je retrouve un lien je le mettrai, mais il a disparu !

  11. #11
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 776
    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 776
    Par défaut
    Le problème n'était pas du tout de pondre l'algo moi-même, plus de voir s'il n'y avait pas une fonction pour faire ça intégrée dans le bundle (ce qui permet d'avoir une version bien adaptée au fonctionnement interne) . Merci quand même, j'apprends en même temps l'un ou l'autre truc sur le ZF ^^ ! J'essayerai néanmoins de faire une version plus Twig de tout ça (postée ici quand je l'aurai faite, c'est-à-dire quand j'arriverai à créer mes entités sans que xdebug n'empêche PHP de partir en boucle infinie : http://www.developpez.net/forums/d11...onsbundle-rc4/).
    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 !

  12. #12
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Par défaut
    Sinon, fais l'enorme requete dont t'as besoin (pour recuperer tout et etre sur de ne pas faire de requete lors de ton rendering), et utilise le cache : http://www.doctrine-project.org/docs...e/caching.html

  13. #13
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 776
    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 776
    Par défaut
    Le problème étant que je n'ai rien comme outil de caching d'installé, donc rien de la part de Doctrine . Je regarderai par contre de plus près le cache à la Sf2.
    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 !

  14. #14
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Par défaut
    Ca va etre rapide ya pas de cache avec sf2

    J'ai fait un bundle pour palier a ca, en reprenant la gestion du cache de... doctrine justement : https://github.com/winzou/CacheBundle J'ai rajoute la gestion du cache dans des fichiers, pour ceux comme toi et moi qui n'ont pas apc ni xcache ni autre.

    Mais le mieux c'est toujours d'installer APC et d'utiliser le caching directement depuis doctrine

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Par défaut
    Bon je répond avec un train de retard mais comme je suis tombé plusieurs fois sur ce topic en cherchant comment afficher l'arbre complet d'un tree doctrine 2 je me dit que c'est pas inutile de poster ma solution ici:

    Dans votre controler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $repo = $em->getRepository('Opart\CmsBundle\Entity\Categorie');
    $arrayTree = $repo->childrenHierarchy();
    Et dans votre template twig:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    {% macro foo(parent) %}
    <ul>
      {% for categorie in parent %}
        <li>{{ categorie.nom }}</li>
        {% if categorie.__children is defined and categorie.__children | length > 0 %}
            {{ _self.foo(categorie.__children) }}
        {% endif %}
      {% endfor %}
    </ul>
    {% endmacro %}
    {{ _self.foo(arrayTree) }}
    J'ai trouvé la solution en lisant la doc sur le tree de doctrine2 (faut aller voir dans "Create html tree") puis en utilisant les macros avec twig

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/03/2007, 17h58
  2. Comment faire afficher la position d'un element dans un tableau
    Par IDE dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 04/11/2006, 13h44
  3. Comment d'afficher automatiquement les macro présentes dans une BDD?
    Par Stéphane Olivier BERNARD dans le forum Access
    Réponses: 3
    Dernier message: 03/07/2006, 15h49
  4. I.nom et A.nom : comment les afficher ?
    Par szdavid dans le forum JDBC
    Réponses: 2
    Dernier message: 17/05/2004, 16h22
  5. [Sprite] Comment les afficher directement à l'écran
    Par fror dans le forum C++Builder
    Réponses: 3
    Dernier message: 05/03/2004, 17h20

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