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 :

Écouter un évènement symfony


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2014
    Messages : 64
    Points : 44
    Points
    44
    Par défaut Écouter un évènement symfony
    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

  2. #2
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2014
    Messages : 64
    Points : 44
    Points
    44
    Par défaut
    voila j'ai commencer par ça:

    BigbrotherEvents.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';
    }
    MessagePostEvent.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;
    	}
    }
    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
     
    <?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());
    	}
    }
    services.yml:
    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 }
    et le voila panneController(methode create):
    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(),
            ));
        }

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 168
    Points : 219
    Points
    219
    Par défaut
    dans CensureListener elle sort d'ou la methode get ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->get('session')
    tu vois le truc ou pas ?

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2014
    Messages : 64
    Points : 44
    Points
    44
    Par défaut
    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?

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 168
    Points : 219
    Points
    219
    Par défaut
    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 !

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2014
    Messages : 64
    Points : 44
    Points
    44
    Par défaut
    Merci beaucoup!

    voila j'ai changé le namespace, parceque c'esst faut de copier coller et j'ai pas fait attention il devient :
    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());
    	}
    }
    a cause de exit() je suis récuperer le message dans mon ecran et quitter l'exécution
    donc comment fait pour le envoyer ,et le récuperer dans une autre page lorsque j'entre dans la

Discussions similaires

  1. [2.x] Écouter un évènement symfony
    Par mandzokich dans le forum Symfony
    Réponses: 2
    Dernier message: 27/08/2014, 23h46
  2. Réponses: 5
    Dernier message: 12/12/2008, 23h26
  3. Réponses: 8
    Dernier message: 18/12/2007, 21h34

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