Bonjour,
Je cherche a réaliser dans mon projet Symfony 2 un layout avec un menu dynamique (composé de menus et de sous menus) issu d'une base de données.
J'ai d'abords créé un modèle de menu avec le Bundle Menu au sein d'un bundle appelé Monbundle (dans MonbundleBunle/Menu/MenuPrincipal.php).
Le code :
J'appelle mon menu grâce au layout dont voila le code :
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
42
43
44
45
46
47
48
49 <?php namespace MyApp\MonbundleBundle\Menu; use Knplabs\Bundle\MenuBundle\Menu; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Router; class MenuPrincipal extends Menu { /** * @param Request $request * @param Router $router */ public function __construct(Request $request, Router $router) { /* Initialisation Bundle Menu */ parent::__construct(); $this->setCurrentUri($request->getRequestUri()); /* Menu */ $this->addChild('Menu1','lien',array('class'=>'menu')); $this->addChild('Menu2','lien',array('class'=>'menu')); $this->addChild('Menu3','lien',array('class'=>'menu')); $this->addChild('Menu4','lien',array('class'=>'menu')); $this->addChild('Menu5','lien',array('class'=>'menu')); /* Sous Menu */ $this['Menu1']->addChild('SousMenu11','lien',array('class'=>'sousmenu')); $this['Menu1']->addChild('SousMenu12','lien',array('class'=>'sousmenu')); $this['Menu2']->addChild('SousMenu21','lien',array('class'=>'sousmenu')); $this['Menu2']->addChild('SousMenu22','lien',array('class'=>'sousmenu')); $this['Menu3']->addChild('SousMenu31','lien',array('class'=>'sousmenu')); $this['Menu3']->addChild('SousMenu32','lien',array('class'=>'sousmenu')); $this['Menu4']->addChild('SousMenu41','lien',array('class'=>'sousmenu')); $this['Menu4']->addChild('SousMenu42','lien',array('class'=>'sousmenu')); $this['Menu5']->addChild('SousMenu51','lien',array('class'=>'sousmenu')); $this['Menu5']->addChild('SousMenu52','lien',array('class'=>'sousmenu')); } }
J'ai aussi crée une base de données contenant les menus et sous menus.
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 <html> <head> <title>{% block title %}{% endblock %}</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" href="{{ asset('bundles/myappmonbundle/css/layout.css') }}" type="text/css" media="all" /> </head> <body> <div id="contenerPrincipal"> <div id="menuPrincipal"> {{ menu('principal') }} </div> <div id="contenerContenu"> {% block content %}{% endblock %} </div> </div> </body> </html>
J'ai testé tout ça grace à un controller appelé TestBDDControler.php dont voici le code :
Ce que je cherche à faire au final c'est évidement de charger dans le fichier MenuPrincipal ma base de données contenant ma table Menu, j'ai essayé en vain deux trois trucs mais impossible d'arriver à mes fins. --'
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 <?php namespace MyApp\MonbundleBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; class TestBDDController extends Controller { public function afficherAction() { $em = $this->container->get('doctrine.orm.entity_manager'); $requete = $em->getRepository('MyAppMonbundleBundle:Menu'); $menus=$requete->findByType(0); $sousmenus=$requete->findByType(1); return $this->container->get('templating')->renderResponse('MyAppMonbundleBundle:TestBDD:afficher.html.twig',array('menus' => $menus,'sousmenus'=>$sousmenus)); } }
Voila ci l'arborescence de mon projet :
J'ai vraiment besoin d'aide la, je galère.
Merci, fef.
Partager