Créer un service listener qui écoute un évènement

26 01 2017

36 commentaires

Créer un service listener qui écoute un évènement

Symfony possède par défaut tout une série d'évènements (kernel.request, kernel.controller, kernel.view, kernel.response). Ces évènements permettent, à l'aide du gestionnaire d'évènements, d'effectuer des actions particulières. Nous pouvons ainsi inscrire du code métier qui s'éxecutera lors du déclenchement d'un évènement. Ce code on le définira en tant que service, c'est ce que l'on appelle communément un listener. Son rôle est d'écouter un évènement et de réagir en effectuant une action lors du déclenchement de celui-ci. On dit que le service listener écoute un évènement particulier. Ce concept est identique au pattern Observer en PHP. Sachez qu'il est également possible de créer son propre évènement. Mais dans ce tutoriel nous nous concentrerons sur un évènement de Symfony présent par défaut : kernel.request.

Le but de ce tutoriel est de pouvoir rediriger un utilisateur qui clique sur un bouton Mon compte vers la page de connexion afin qu'il ait accès aux informations personnelles de son compte. Vous pouvez voir le résultat final sur MyPanier.fr. Pour cela nous allons créer un service listener qui écoute l'évènement kernel.request.

L'évènement kernel.request est un évènement qui est déclenché très tôt dans l'exécution d'une page, avant même que le choix du contrôleur à exécuter ne soit fait. Son objectif est de permettre à un listener de retourner immédiatement une réponse, sans même passer par l'exécution d'un contrôleur. La classe de l'évènement donné en argument par le gestionnaire d'évènements est GetResponseEvent. Nous utiliserons sa méthode setResponse(Response $response) pour indiquer la redirection à effectuer.

Tout d'abord déclarons le listener dans services.yml

    moncompteListener:
        class: Boutique\BoutiqueBundle\ Listener\MoncompteListener
        arguments: [@service_container,@session]
        tags:
            - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }

Ensuite créons le listener dans un dossier Listener. Appelons ce fichier MoncompteListener.php

<?php
namespace Boutique\BoutiqueBundle\Listener;

use Symfony\Component \DependencyInjection

\ContainerInterface;
use Symfony\Component \HttpFoundation\Session\Session;
use Symfony\Component \HttpFoundation\RedirectResponse;
use Symfony\Component \HttpKernel\Event

\GetResponseEvent;

class MoncompteListener
{
    public function __construct(ContainerInterface $container, Session $session)
    {
        $this->session = $session;
        $this->router = $container->get('router');
        $this->securityContext = $container->get('security.context');
    }
    
    public function onKernelRequest(GetResponseEvent $event)
    {
        $route = $event->getRequest()->attributes->get('_route');
        
        if ($route == 'utilisateurs_homepage') {
        
            if (!is_object($this->securityContext-> getToken()->getUser())) {
                $this->session->getFlashBag()->add('notification','Vous devez vous identifier');
                $event->setResponse(new RedirectResponse($this->router-> generate('fos_user_security_login')));
            }
        }
    }
}

Voila à présent quand on clique sur le bouton Mon compte nous sommes invités à nous connecter.


 catégorie: Symfony


Commentaires

<a <a href="http://ukpmk.ru/aforizmy-i-tvorchestvo-istochnik-vdoxnoveniya-dlya-xudozhnikov-i-pisatel posté le 13/02/2024 à 12:49

Советую прочитать эту статью про афоризмы и статусы <a href=http://ukpmk.ru/aforizmy-i-tvorchestvo-istochnik-vdoxnoveniya-dlya-xudozhnikov-i-pisatelej/>http://ukpmk.ru/aforizmy-i-tvorchestvo-istochnik-vdoxnoveniya-dlya-xudozhnikov-i-pisatelej/</a>.

Также не забудьте добавить сайт в закладки: <a href="http://ukpmk.ru/aforizmy-i-tvorchestvo-istochnik-vdoxnoveniya-dlya-xudozhnikov-i-pisatelej/">http://ukpmk.ru/aforizmy-i-tvorchestvo-istochnik-vdoxnoveniya-dlya-xudozhnikov-i-pisatelej/</a>


Matthew posté le 13/02/2024 à 15:21

Good article


<a <a href="http://freshufa.com/news/stati_10/vdohnovlyayuschie_aforizmyi_o_reshimosti_kotoryie_pomo posté le 13/02/2024 à 18:18

Советую прочитать эту статью про афоризмы и статусы <a href=http://freshufa.com/news/stati_10/vdohnovlyayuschie_aforizmyi_o_reshimosti_kotoryie_pomogut_preodolet_lyubyie_trudnosti_i_dostich_postavlennyih_tseley>http://freshufa.com/news/stati_10/vdohnovlyayuschie_aforizmyi_o_reshimosti_kotoryie_pomogut_preodolet_lyubyie_trudnosti_i_dostich_postavlennyih_tseley</a>

Также не забудьте добавить сайт в закладки: <a href="http://freshufa.com/news/stati_10/vdohnovlyayuschie_aforizmyi_o_reshimosti_kotoryie_pomogut_preodolet_lyubyie_trudnosti_i_dostich_postavlennyih_tseley">http://freshufa.com/news/stati_10/vdohnovlyayuschie_aforizmyi_o_reshimosti_kotoryie_pomogut_preodolet_lyubyie_trudnosti_i_dostich_postavlennyih_tseley</a>


<a href="https://humaninside.ru/poznavatelno/84196-aforizmy-o-tayne-zhizni-zagadki-mira-v-c.html">Al posté le 13/02/2024 à 21:57

Советую прочитать эту статью про афоризмы и статусы <a href=https://humaninside.ru/poznavatelno/84196-aforizmy-o-tayne-zhizni-zagadki-mira-v-c.html>https://humaninside.ru/poznavatelno/84196-aforizmy-o-tayne-zhizni-zagadki-mira-v-c.html</a>

Также не забудьте добавить сайт в закладки: <a href="https://humaninside.ru/poznavatelno/84196-aforizmy-o-tayne-zhizni-zagadki-mira-v-c.html">https://humaninside.ru/poznavatelno/84196-aforizmy-o-tayne-zhizni-zagadki-mira-v-c.html/</a>


best paying online casino online slot win new no deposit online casino bonuses best slot machines in posté le 14/02/2024 à 07:55

best paying online casino
online slot win
new no deposit online casino bonuses
best slot machines in casino
casino live table games


<a href="https://4istorii.ru/avtorskie-rasskazy-i-istorii/129043-aforizmy-o-tekhnologicheskom-progre posté le 14/02/2024 à 09:50

Советую прочитать эту статью про афоризмы и статусы <a href=https://4istorii.ru/avtorskie-rasskazy-i-istorii/129043-aforizmy-o-tekhnologicheskom-progress.html>https://4istorii.ru/avtorskie-rasskazy-i-istorii/129043-aforizmy-o-tekhnologicheskom-progress.html</a>

Также не забудьте добавить сайт в закладки: <a href="https://4istorii.ru/avtorskie-rasskazy-i-istorii/129043-aforizmy-o-tekhnologicheskom-progress.html">https://4istorii.ru/avtorskie-rasskazy-i-istorii/129043-aforizmy-o-tekhnologicheskom-progress.html</a>


<a href="https://a-so.ru/">AlvinJip</a> posté le 14/02/2024 à 16:26

Советую прочитать сайт про отопление <a href=https://a-so.ru/>https://a-so.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://a-so.ru/">https://a-so.ru/</a>


<a href="https://artcet.ru/">AlvinJip</a> posté le 14/02/2024 à 20:55

Советую прочитать сайт про отопление <a href=https://artcet.ru/>https://artcet.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://artcet.ru/">https://artcet.ru/</a>


<a href="https://artcet.ru/">WilliamOpica</a> posté le 16/02/2024 à 19:49

Советую прочитать сайт про отопление <a href=https://artcet.ru/>https://artcet.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://artcet.ru/">https://artcet.ru/</a>


<a href="https://avtomaxi22.ru/">WilliamOpica</a> posté le 17/02/2024 à 11:01

Советую прочитать сайт про автостекла <a href=https://avtomaxi22.ru/>https://avtomaxi22.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://avtomaxi22.ru/">https://avtomaxi22.ru/</a>


<a href="https://med-like.ru/">WilliamOpica</a> posté le 17/02/2024 à 12:52

Советую прочитать сайт про цветы <a href=https://med-like.ru/>https://med-like.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://med-like.ru/">https://med-like.ru/</a>


<a href="https://metal82.ru/">WilliamOpica</a> posté le 17/02/2024 à 15:15

Советую прочитать сайт про металлоизделия <a href=https://metal82.ru/>https://metal82.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://metal82.ru/">https://metal82.ru/</a>


<a href="https://admlihoslavl.ru/">WilliamOpica</a> posté le 17/02/2024 à 17:55

Советую прочитать сайт города Лихославль <a href=https://admlihoslavl.ru/>https://admlihoslavl.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://admlihoslavl.ru/">https://admlihoslavl.ru/</a>


<a href="https://elegos.ru/">WilliamOpica</a> posté le 17/02/2024 à 20:34

Советуем посетить сайт о культуре <a href=https://elegos.ru/>https://elegos.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://elegos.ru/">https://elegos.ru/</a>


<a href="https://allkigurumi.ru/">WilliamOpica</a> posté le 18/02/2024 à 14:36

Советуем посетить сайт о моде <a href=https://allkigurumi.ru/>https://allkigurumi.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://allkigurumi.ru/">https://allkigurumi.ru/</a>


<a href="https://40-ka.ru/">WilliamOpica</a> posté le 18/02/2024 à 17:13

Советуем посетить сайт о моде <a href=https://40-ka.ru/>https://40-ka.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://40-ka.ru/">https://40-ka.ru/</a>


<a href="https://100sm.ru/">WilliamOpica</a> posté le 18/02/2024 à 19:27

Советуем посетить сайт о строительстве <a href=https://100sm.ru/>https://100sm.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://100sm.ru/">https://100sm.ru/</a>


<a href="https://club-columb.ru/">WilliamOpica</a> posté le 19/02/2024 à 11:23

Советуем посетить сайт о строительстве <a href=https://club-columb.ru/>https://club-columb.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://club-columb.ru/">https://club-columb.ru/</a>


<a href="https://daibob.ru/">WilliamOpica</a> posté le 19/02/2024 à 14:57

Советуем посетить сайт о строительстве <a href=https://daibob.ru/>https://daibob.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://daibob.ru/">https://daibob.ru/</a>


<a href="https://gulliverauto.ru/">WilliamOpica</a> posté le 19/02/2024 à 18:11

Советуем посетить сайт об авто <a href=https://gulliverauto.ru/>https://gulliverauto.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://gulliverauto.ru/">https://gulliverauto.ru/</a>


<a href="https://vektor-meh.ru/">WilliamOpica</a> posté le 19/02/2024 à 21:03

Советуем посетить сайт об авто <a href=https://vektor-meh.ru/>https://vektor-meh.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://vektor-meh.ru/">https://vektor-meh.ru/</a>


<a href="https://kryshi-remont.ru/">WilliamOpica</a> posté le 20/02/2024 à 10:28

Советуем посетить сайт про ремонт крыши <a href=https://kryshi-remont.ru/>https://kryshi-remont.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://kryshi-remont.ru/">https://kryshi-remont.ru/</a>


<a href="https://stroydvor89.ru/">WilliamOpica</a> posté le 20/02/2024 à 13:51

Советуем посетить сайт про стройку <a href=https://stroydvor89.ru/>https://stroydvor89.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://stroydvor89.ru/">https://stroydvor89.ru/</a>


<a href="https://kinokabra.ru/">WilliamOpica</a> posté le 20/02/2024 à 16:41

Советуем посетить сайт про кино <a href=https://kinokabra.ru/>https://kinokabra.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://kinokabra.ru/">https://kinokabra.ru/</a>


<a href="https://balkonnaya-dver.ru/">WilliamOpica</a> posté le 20/02/2024 à 20:36

Советуем посетить сайт про балкон <a href=https://balkonnaya-dver.ru/>https://balkonnaya-dver.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://balkonnaya-dver.ru/">https://balkonnaya-dver.ru/</a>


<a href="https://daibob.ru/">WilliamOpica</a> posté le 21/02/2024 à 12:25

Советуем посетить сайт про строительство <a href=https://daibob.ru/>https://daibob.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://daibob.ru/">https://daibob.ru/</a>


<a href="https://drova-smolensk.ru/">WilliamOpica</a> posté le 21/02/2024 à 16:04

Советуем посетить сайт про дрова <a href=https://drova-smolensk.ru/>https://drova-smolensk.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://drova-smolensk.ru/">https://drova-smolensk.ru/</a>


<a href="https://amurplanet.ru/">WilliamOpica</a> posté le 21/02/2024 à 20:52

Советуем посетить сайт про прицепы <a href=https://amurplanet.ru/>https://amurplanet.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://amurplanet.ru/">https://amurplanet.ru/</a>


<a href="https://amurplanet.ru/">WilliamOpica</a> posté le 22/02/2024 à 11:46

Советуем посетить сайт с анекдотами<a href=https://anekdotitut.ru/>https://anekdotitut.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://anekdotitut.ru/">https://anekdotitut.ru/</a>


<a href="https://usovanton.blogspot.com/">WilliamOpica</a> posté le 22/02/2024 à 13:55

Советуем посетить сайт про автомасло <a href=https://usovanton.blogspot.com/>https://usovanton.blogspot.com/</a>

Также не забудьте добавить сайт в закладки: <a href="https://usovanton.blogspot.com/">https://usovanton.blogspot.com/</a>


<a href="https://astrologiyanauka.blogspot.com/">WilliamOpica</a> posté le 22/02/2024 à 15:58

Советуем посетить сайт про астрологию <a href=https://astrologiyanauka.blogspot.com/>https://astrologiyanauka.blogspot.com/</a>

Также не забудьте добавить сайт в закладки: <a href="https://astrologiyanauka.blogspot.com/">https://astrologiyanauka.blogspot.com/</a>


<a href="https://telegra.ph/Tainstvennyj-mir-dikih-zhivotnyh-putevoditel-po-neizvedannym-tropam-prir posté le 22/02/2024 à 18:23

Советуем посетить сайт про диких животных <a href=https://telegra.ph/Tainstvennyj-mir-dikih-zhivotnyh-putevoditel-po-neizvedannym-tropam-prirody-12-23>https://telegra.ph/Tainstvennyj-mir-dikih-zhivotnyh-putevoditel-po-neizvedannym-tropam-prirody-12-23</a>

Также не забудьте добавить сайт в закладки: <a href="https://telegra.ph/Tainstvennyj-mir-dikih-zhivotnyh-putevoditel-po-neizvedannym-tropam-prirody-12-23">https://telegra.ph/Tainstvennyj-mir-dikih-zhivotnyh-putevoditel-po-neizvedannym-tropam-prirody-12-23</a>


MilesLag posté le 25/02/2024 à 11:41

It's amazing to pay a quick visit this web site and reading the views of all friends about this piece of writing, while I am also zealous of getting experience.
look also at my pages and give a rating

XEvil is an easy, fast and practical application for thoroughly automated recognition and bypass in the vast majority of captchas (CAPTCHAs), without the want to connect any third-party solutions.

This system Just about totally replaces expert services like AntiGate (Anti-Captcha), RuCaptcha, DeCaptcher and Many others. Concurrently, it substantially exceeds them in recognition pace (ten occasions or even more) and is totally free.

http://asianmate.kr/bbs/board.php?bo_table=free&wr_id=66748 speed index
https://somalict.com/forums/users/demetriagearhart/ fast indexing of links

@d@=


<a href="https://antipushkin.ru/">WilliamOpica</a> posté le 25/02/2024 à 18:03

Советуем посетить сайт Антипушкин <a href=https://antipushkin.ru/>https://antipushkin.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://antipushkin.ru/">https://antipushkin.ru/</a>


<a href="https://zhiloy-komplex.ru/">WilliamOpica</a> posté le 25/02/2024 à 21:33

Советуем посетить сайт про жилые комплексы <a href=https://zhiloy-komplex.ru/>https://zhiloy-komplex.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://zhiloy-komplex.ru/">https://zhiloy-komplex.ru/</a>


<a href="https://arenda-legkovyh-pricepov.ru/">WilliamOpica</a> posté le 26/02/2024 à 10:42

Советуем посетить сайт про авто <a href=https://arenda-legkovyh-pricepov.ru/>https://arenda-legkovyh-pricepov.ru/</a>

Также не забудьте добавить сайт в закладки: <a href="https://arenda-legkovyh-pricepov.ru/">https://arenda-legkovyh-pricepov.ru/</a>



Laisser un commentaire