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

Zend_Acl & Zend_Auth PHP Discussion :

Passer un variable pas $this->view->assign() si page non autorisée


Sujet :

Zend_Acl & Zend_Auth PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Par défaut Passer un variable pas $this->view->assign() si page non autorisée
    Bonjour à tous.
    J'utilise Zend_Acl pour la gestion des droits sur mon site. Quand une page n'est pas autorisée l'utilisateur est redirigé vers la page de login. Ci dessous le code :
    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
    <?php
    $auth = Zend_Auth::getInstance();
            if ($auth->hasIdentity())
            {
                $identity = $auth->getIdentity();
                $role = strtolower($identity->prf_id);
            } else
            {
                $role = 'visiteur';
            }
            $controller = $request->controller;
            $action = $request->action;
            if (!$acl->isAllowed($role, $controller, $action))
            {
                if ($role == 'visiteur')
                {
                    $this->view->loginErrorMessage = 'EEEEE';                
                    $request->setControllerName('utilisateurs');
                    $request->setActionName('login');
                } else
                {
                    $request->setControllerName('error');
                    $request->setActionName('noauth');
                }
            }
    J'essaie de passer un variable avec $this->view->assign() mais je n'y arrive pas.

    Merci de m'aider.

  2. #2
    Membre actif
    Inscrit en
    Avril 2003
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2003
    Messages : 121
    Par défaut
    tu as un message d'erreur où rien ne s'affiche ?
    en faisant Zend_Debug::dump( $this->view) tu vois ton message quelque part dans la liste des variables passées à la vue ?

  3. #3
    Membre éclairé Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Par défaut
    Rien n'est affiché et le variable loginMessage n'est affiché nulle part dans le dump de $this->view.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 178
    Par défaut
    Hello,

    pourrais-tu préciser où tu as écrit le code que tu cites, quelle méthode de quel objet ?

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bonjour,

    Ton but est donc d'écrire un message d'erreur !

    Dans ton exemple tu veux donc passer un message à la vue login, or tu te trouves en dehors de ce controller, et là tu ne fait que assigner une valeur à une vue dans laquelle tu ne rentres pas.

    Pour faire ce genre de choses, il existe le flashMessenger();

    Alors moi je le pratique comme ceci:

    dans mon boostrap je l'initialise comme ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        public function _initVue() {
     
            $this->bootstrap('layout');
            $layout = $this->getResource('layout');
            $view = $layout->getView();
     
            //Gestion des messages d'erreurs
            $flashMessenger = new Zend_Controller_Action_Helper_FlashMessenger();
            $messages = $flashMessenger->getMessages();
            if (is_array($messages)) {
                $view->flashMessenger = $messages;
            }
        }
    Ensuite, quand j'ai un message d'erreur, je le met dans un flashMessenger
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->_helper->getHelper('FlashMessenger')->addMessage('Vous avez omis de mettre un/des contexte(s)');
    enfin dans mon layout je l'affiche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
              <?php if(!empty($this->flashMessenger)): ?>
                <p> <b>Message(s) :</b><br /></p>
     
     
                    <?php foreach($this->flashMessenger as $message): ?>
                <div class="errors">
                            <?php echo $this->escape($message); ?><br />
                </div>
                    <?php endforeach; ?>

  6. #6
    Membre éclairé Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Par défaut
    Merci pour vos réponses.

    J'utilise ce code dans un plugin MONAPPLI_Controllers_Plugins_Acl.
    J'ai essayé le code de MaitrePylos mais j'obtiens cette erreur :
    Notice: Undefined property: MONAPPLI_Controllers_Plugins_Acl::$_helper
    Fatal error: Call to a member function getHelper() on a non-object

Discussions similaires

  1. Passer une variable d'un Controller à un View
    Par Alabama-song dans le forum MVC
    Réponses: 2
    Dernier message: 15/09/2011, 10h47
  2. Mon code ne veut pas passer une variable
    Par pasbonte dans le forum Langage
    Réponses: 2
    Dernier message: 01/01/2009, 14h13
  3. [MySQL] Passer une variable d'un formulaire à un fichier ne dépendant pas du formulaire.
    Par Mawashigeri dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 06/04/2007, 10h11
  4. Réponses: 3
    Dernier message: 24/04/2004, 10h53

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