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 :

association reflexive menu site web


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    501
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 501
    Points : 102
    Points
    102
    Par défaut association reflexive menu site web
    Bonjour a tous,
    Je m'explique je voudrai remplir un menu avec des items, c'est du materiel informatique avec des categories, genre

    Pc portable une categorie de materiel: les items des sous categories

    Pc portable: ordianteur polyvalent
    ordinateur professionnel
    ect
    Pc bureau: familiale
    ect

    le tous dans une table categorie d'une base de donnée

    Exemple:

    id libelle id_categorie
    1 pc portable null
    2 bureau null
    3 ordianteur polyvalent 1
    4 ordinateur professionnel 1

    id_categorie et une relation clé etrangére avec la meme table, une association reflexive sur elle méme si vous me comprenais.

    Avec cela je voudrai remplir un menu avec des items

    genre

    Qand on clique sur Pc portable on des des sous menu ordianteur polyvalent
    ordinateur professionnel
    Pc portable ordianteur polyvalent
    ordinateur professionnel

    maintenant remplir ca aprés une requete a l'aide d'un foreach

    genre

    $listecategorie = $em->createQuery('select c FROM EcommerceCatalogueBundle:Categorie c JOIN c.categorie cat where c.categorie is not null')


    <div id="menu">
    <div class="menu" id="menu1" onmouseover="affiche(this)">
    {% for cat in listeCategorie %}
    <a href="#">{{cat.libelle}}</a>
    <div class="sousmenu" id="sousmenu1" style="display:none" onmouseout="affiche(this)">
    <div><a href=" {{ path('frontend_produit_ajouter') }} " >{{ cat.categorie.libelle }}</a></div>
    </div>{% endfor %}
    </div>

    </div>



    l'élément {{ cat.categorie.libelle }} c'est la relation avec la categorie id_categorie

    Si quelqu'un peut me d'indiquer une solution pour gérer ce genre de chose.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,

    A priori ton mapping doit être ainsi
    Categorie hasOne parent (entité Categorie)
    et
    Categorie hasMany children (collection d'entités Catégorie, la relation inverse donc).
    exemple de mapping dans la doc de Doctrine: http://docs.doctrine-project.org/en/...lf-referencing


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $dql="SELECT parents,children FROM Categorie parents JOIN c.children children WHERE c.parent IS NULL";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <ul id="menu">
    {%for categorieParent in categoriesParents%}
     <li> {{categorieParent.libelle}}
       <!--cette partie est à masquer/afficher via javascript, s'il y a beaucoup d'item, peut-être faut-il prévoir de charger les sous-menus via Ajax-->
       <ul class="sous-menu">
       {%for categorieEnfant in categorieParent.children%}
         <li>{{categorieEnfant.libelle}}</li>
       {%endfor%}
       </ul>
      </li>
    {%endfor%}
    </ul>
    Néammoins si on prend cette modélisation, on est susceptible d'avoir une arborescence plus profonde (un enfant pouvant lui-même avoir plusieurs enfants, etc..)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    501
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 501
    Points : 102
    Points
    102
    Par défaut re
    merci a toi, je vais analysé et je te tien au courant

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    501
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 501
    Points : 102
    Points
    102
    Par défaut re
    je ne connais pas hasMany je vois ce que tu veut dire pais je vois pas comment procédé

    Voici ma classe Categorie
    <code>
    <?php

    // Espace de nom :
    namespace Ecommerce\CatalogueBundle\Entity;

    // Doctrine
    use Doctrine\ORM\Mapping as ORM;
    // Contraintes de validation de saisie
    use Symfony\Component\Validator\Constraints as Assert;

    /**
    * @ORM\entity
    */

    Class Categorie {

    /**
    * @ORM\GeneratedValue
    * @ORM\Id
    * @ORM\Column(type="integer")
    */

    private $id;


    /**
    * @ORM\Column(type="string",length=50)
    * @Assert\NotBlank(message="Le champ ne doit pas être vide")
    * @Assert\MaxLength(limit=50, message="Le champ ne doit pas dépasser {{ limit }} caractères")
    * @Assert\MinLength(limit=3, message="Le champ doit comporter au moins {{ limit }} caractères")
    */

    private $libelle;


    c'est ici que je fais ma relation sur elle meme
    /**
    * @ORM\ManyToOne(targetEntity="Categorie")
    */
    private $categorie;



    /**
    * Get id
    *
    * @return integer
    */
    public function getId()
    {
    return $this->id;
    }

    /**
    * Set libelle
    *
    * @param string $libelle
    * @return Categorie
    */
    public function setLibelle($libelle)
    {
    $this->libelle = $libelle;

    return $this;
    }

    /**
    * Get libelle
    *
    * @return string
    */
    public function getLibelle()
    {
    return $this->libelle;
    }

    /**
    * Set categorie
    *
    * @param Ecommerce\CatalogueBundle\Entity\Categorie $categorie
    * @return Categorie
    */
    public function setCategorie(\Ecommerce\CatalogueBundle\Entity\Categorie $categorie = null)
    {
    $this->categorie = $categorie;

    return $this;
    }

    /**
    * Get categorie
    *
    * @return Ecommerce\CatalogueBundle\Entity\Categorie
    */
    public function getCategorie()
    {
    return $this->categorie;
    }
    }
    </code>

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    501
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 501
    Points : 102
    Points
    102
    Par défaut re
    Bon ben j'ai vu la doc j'avais pas vu la rubrique je vais analysé la chose avant de te demandé des réponses

Discussions similaires

  1. Erreur avec: Menu <Site Web> <Configuration ASP.NET>
    Par PiPo123 dans le forum Visual Studio
    Réponses: 3
    Dernier message: 23/06/2011, 01h21
  2. Recherche entreprise ou association pour un site web
    Par DreammyKetty dans le forum Stages
    Réponses: 5
    Dernier message: 07/01/2008, 01h29
  3. Réponses: 8
    Dernier message: 24/09/2007, 18h36
  4. Réponses: 3
    Dernier message: 29/04/2007, 22h29
  5. [Site Web]Comment former une table type Menu arborescent?
    Par Zebeber dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 24/03/2006, 08h55

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