Bonsoir,
J'intègre FOSuserBundle à mon site en suivant http://j-place.developpez.com/tutori...fony2/#LVI-A-1 et je rencontre un problème technique.
En effet, sur le layout du mon site se trouve un menu, ce dernier est constitué grâce à requêtes sur mes entités (en l’occurrence tous les "Rayon" pour les menus et toutes les "Categorie" pour les sous-menus).
J'ai donc ce morceaux de code dans tous mes controlleurs pour "nourrir" mon layout (mes pages héritant du layout en question):
Jusque là, tout va bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php $em = $this->getDoctrine()->getEntityManager(); /*Besoin pour le menu de tous les Rayons et de toutes les catégories*/ $rayons = $em->getRepository('SiteMainBundle:Rayon')->findAll(); $categories = $em->getRepository('SiteMainBundle:Categorie')->findAll(); ?>
Mais dans le tutorial, l'auteur nous fait créer un layout dans le bundle Utilisateur qui hérite de notre layout pricipal (pour reprendre la base de notre site sur les pages (register etc) générés par FOSuser), et ayant besoin de certains donnés dans mon layout, j'ai une erreur m'indiquant que "rayons" est inconnu.
J'ai donc été cherché le controlleur du bundle FOSuser, puis j'ai ajouté sans trop y croire dans la méthode "registerAction()", dequoi récupérer les infos suffisantes au layout:
mais je me retrouve avec l'erreur:
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 <?php public function registerAction() { $em = $this->getDoctrine()->getEntityManager(); /*Besoin pour le menu de tous les Rayons et de toutes les catégories*/ $rayons = $em->getRepository('SiteMainBundle:Rayon')->findAll(); $categories = $em->getRepository('SiteMainBundle:Categorie')->findAll(); $form = $this->container->get('fos_user.registration.form'); $formHandler = $this->container->get('fos_user.registration.form.handler'); $confirmationEnabled = $this->container->getParameter('fos_user.registration.confirmation.enabled'); $process = $formHandler->process($confirmationEnabled); if ($process) { $user = $form->getData(); if ($confirmationEnabled) { $this->container->get('session')->set('fos_user_send_confirmation_email/email', $user->getEmail()); $route = 'fos_user_registration_check_email'; } else { $this->authenticateUser($user); $route = 'fos_user_registration_confirmed'; } $this->setFlash('fos_user_success', 'registration.flash.user_created'); $url = $this->container->get('router')->generate($route); return new RedirectResponse($url); } return $this->container->get('templating')->renderResponse('FOSUserBundle:Registration:register.html.'.$this->getEngine(), array( 'form' => $form->createView(), 'theme' => $this->container->getParameter('fos_user.template.theme'), 'rayons' => $rayons, 'categories' => $categories )); } ?>
"Fatal error: Call to undefined method FOS\UserBundle\Controller\RegistrationController::getDoctrine() in C:\wamp\www\site\vendor\bundles\FOS\UserBundle\Controller\RegistrationController.php on line 30"
Existe t-il un moyen de récupérer ces informations ? Me conseillez vous de procéder autrement ?
Merci beaucoup !
Partager