salut
j'ai essayé de réaliser un écouteur "PanneListener" d'un evenement "PanneEvent" (declanché a la création de panne) qui va envoyer une notification a une autre page
et j'arrive pas a le realiser
quelqu'un peut me donner l'aide
salut
j'ai essayé de réaliser un écouteur "PanneListener" d'un evenement "PanneEvent" (declanché a la création de panne) qui va envoyer une notification a une autre page
et j'arrive pas a le realiser
quelqu'un peut me donner l'aide
voila j'ai commencer par ça:
BigbrotherEvents.php
MessagePostEvent.php:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php namespace Gestion\gestionBundle\Bigbrother; final class BigbrotherEvents { const onMessagePost = 'gestiongestion.bigbrother.post_message'; }
CensureListener.php:
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 <?php // src/Gestion/gestionBundle/Bigbrother/MessagePostEvent.php namespace Gestion\gestionBundle\Bigbrother; use Symfony\Component\EventDispatcher\Event; class MessagePostEvent extends Event { protected $message; public function __construct($message) { $this->message = $message; } public function getMessage() { return $this->message; } public function setMessage($message) { return $this->message = $message; } }
services.yml:
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 <?php // src/Sdz/BlogBundle/Bigbrother/CensureListener.php namespace Sdz\BlogBundle\Bigbrother; use Gestion\gestionBundle\Bigbrother\MessagePostEvent; class CensureListener { protected function censureMessage($message) { $this->get('session')->getFlashBag()->add('notice', $message); } public function onMessagePost(MessagePostEvent $event) { $this->censureMessage($event->getMessage()); } }
et le voila panneController(methode create):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 gestiongestion.censure_listener: class: Gestion\gestionBundle\Bigbrother\CensureListener #arguments: tags: - { name: kernel.event_listener, event:gestiongestion.bigbrother.post_message, method: onMessagePost }
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 public function createAction(Request $request) { $entity = new Panne(); $form = $this->createCreateForm($entity); $form->handleRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($entity); $em->flush(); $event = new MessagePostEvent('et le voila je viens de créer une panne Monsieur le responsable de maintenance'); $this->get('event_dispatcher')->dispatch(BigbrotherEvents::onMessagePost, $event); return $this->redirect($this->generateUrl('panne', array('id' => $entity->getId()))); } return $this->render('GestiongestionBundle:Panne:new.html.twig', array( 'entity' => $entity, 'form' => $form->createView(), )); }
dans CensureListener elle sort d'ou la methode get ?
tu vois le truc ou pas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $this->get('session')
non
mais ou le problème ici?
l'erreur qui s'affiche est:
ClassNotFoundException: Attempted to load class "CensureListener" from namespace "Gestion\gestionBundle\Bigbrother" in /home/mostafa/Symfony/app/cache/dev/appDevDebugProjectContainer.php line 1467. Do you need to "use" it from another namespace?
concernant la méthode que j'ai suivi n'a pas de problem?
Ouai tu vas avoir du mal a suivre !
Si la class est dans le dossier Sdz/BlogBundle/Bigbrother sont namespace est Sdz\BlogBundle\Bigbrother ( donc aucun namespace est bon dans ce que tu as posté ... ).
Ensuite la méthode "get" dans la class "CensureListener" n'existe pas, le php c'est magique mais faut coder un minimum pour que cela le soit.
Je te conseil de reprendre la lecture du tutorial que t'as commencé .... parce que là de ce que je vois tu n'as pas compris ce que tu faisais !
Merci beaucoup!
voila j'ai changé le namespace, parceque c'esst faut de copier coller et j'ai pas fait attention il devient :
a cause de exit() je suis récuperer le message dans mon ecran et quitter l'exécution
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 <?php // src/Gestion/gestionBundle/Bigbrother/CensureListener.php namespace Gestion\gestionBundle\Bigbrother; use Gestion\gestionBundle\Bigbrother\MessagePostEvent; class CensureListener { protected function censureMessage($message) { //$this->get('session')->getFlashBag()->add('notice', $message); echo $message;exit(); } public function onMessagePost(MessagePostEvent $event) { $this->censureMessage($event->getMessage()); } }
donc comment fait pour le envoyer ,et le récuperer dans une autre page lorsque j'entre dans la
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager