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

MVC PHP Discussion :

[ZF2] Redirection à partir du module


Sujet :

MVC PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut [ZF2] Redirection à partir du module
    Bonjour,

    Je cherche la façon la plus correcte d'effectuer une redirection depuis mon module. Le but est assez classique : contrôle d'accès et reroutage vers le login.

    Pour cela, j'utilise l'événement MVC dans le module. J'y suis presque, mais je n'arrive pas à toruver de méthode de redirection à partir du module.
    J'imagine que je peux utiliser le router, mais je ne vois pas comment.

    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
    class Module
    {
     
        public function onBootstrap(MvcEvent $e)
        {
            $e->getApplication()->getServiceManager()->get('translator');
            $eventManager = $e->getApplication()->getEventManager();
     
            $this->initAcls($e);
     
            $moduleRouteListener = new ModuleRouteListener();
            $moduleRouteListener->attach($eventManager);
        }
     
        public function initAcls($e)
        {
            $app = $e->getParam('application');
            $app->getEventManager()->attach('route', array($this, 'checkAcls'), -100);
        }
     
        /**
         *
         * @param  Zend\Mvc\MvcEvent $e
         */
        public function checkAcls($e)
        {
            $routeMatch = $e->getRouteMatch();
            if (!$routeMatch) {
                return;
            }
     
            $controller = $routeMatch->getParam('controller', false);
            if ($controller != 'Application\Controller\Admin') {
                return;
            }
     
            $auth = new \Application\Service\AuthenticationService();
            if ($auth->hasIdentity()) {
                return;
            }
     
            // redirection vers la route 'login'
            // comment faire ?
            $router = $e->getRouter();
            var_dump($router);
        }
    d'avance merci.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 131
    Par défaut
    Salut,
    ca me parrait plus simple avec une redirection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $e->getResponse()->setRedirect('http://another/page/', 301);

  3. #3
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Ce serait effectivement plus simple si une telle méthode existait...

    Il n'y a pas de méthode setRedirect dans la classe Zend\Http\Response

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 131
    Par défaut
    Ah je savais pas, j'utilise tjrs la v 1.11
    j'ai rien dis alors

  5. #5
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Pour l'instant, et faute de mieux, je réplique une partie du plugin redirect:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            $response  = $e->getResponse();
            $response->getHeaders()->addHeaderLine('Location', 'login');
            $response->setStatusCode(302);
            return $response;

Discussions similaires

  1. redirection à partir d'un formulaire
    Par iceman2001 dans le forum Langage
    Réponses: 8
    Dernier message: 06/08/2008, 15h13
  2. redirection à partir d'une variable
    Par debutantasp dans le forum Langage
    Réponses: 3
    Dernier message: 21/05/2008, 13h25
  3. Réponses: 16
    Dernier message: 16/04/2007, 08h42
  4. Redirection à partir d'un fichier
    Par Stef.web dans le forum Langage
    Réponses: 1
    Dernier message: 06/08/2006, 20h24
  5. Redirection à partir d'une frame
    Par Gremlins13 dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2006, 16h26

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