Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Je rencontre une difficulté avec le plugin qui valide l'accès aux ressources :
- j'essaie d'accéder à module/controlleur/action = admin/index/index
- le plugin s'exécute
- l'autorisation Zend_Auth est valide
- le controle des ACL échoue (normal, je n'ai pas le droit d'accès)
=> je redirige donc vers module/controlleur/action = public/index/index
$request->setModuleName($module) ;
$request->setControllerName($controller) ;
$request->setActionName($action) ;
Or, je me retrouve en admin/index/index !!!
C'est comme si le _redirect effectué était écrasé.
J'ai vérifié que je n'ai aucun post"quelquechose" qui s'exécute après.
Le fait de "fermer" les scripts php par "?>" peut-il etre une cause ?
Auriez-vous des idées / pistes à me proposer ?
Merci par avance,
Jean
PS : voici le dump de $request en fin de plugin
object(Zend_Controller_Request_Http)#77 (14) { ["_paramSources:protected"] => array(2) { [0] => string(4) "_GET" [1] => string(5) "_POST" } ["_requestUri:protected"] => string(12) "/admin/index" ["_baseUrl:protected"] => string(0) "" ["_basePath:protected"] => NULL ["_pathInfo:protected"] => string(12) "/admin/index" ["_params:protected"] => array(3) { ["module"] => string(5) "admin" ["controller"] => string(5) "index" ["action"] => string(5) "index" } ["_aliases:protected"] => array(0) { } ["_dispatched:protected"] => bool(true) ["_module:protected"] => string(6) "public" ["_moduleKey:protected"] => string(6) "module" ["_controller:protected"] => string(5) "index" ["_controllerKey:protected"] => string(10) "controller" ["_action:protected"] => string(5) "index" ["_actionKey:protected"] => string(6) "action" }
Dernière modification par jean (10-12-2009 13:31:08)
Hors ligne
Pourquoi n'utilises-tu pas la méthode protégé _redirect(), du défini dans le Zend_Controller_Action ?
Ton plugin devrait agir en preDispatch(), donc en effectuant une redirection les plugins en postDispatch() ne sont pas tout de suite lancé.
Hors ligne
Merci pour cette piste.
Je pensais que dans un plugin en preDispatch, lorsque l'on modifiait $request avec les méthodes setModuleName, setControllerName, setActionName, cela effectuait un _redirect() vers le module/controller/action cible.
Cela n'a pas l'air de fonctionner comme çà. Vous confirmez ?
Je sais faire un _redirect() dans une action, mais comment le faire dans un plugin en preDispatch ?
Hors ligne
Honte à moi !
Je faisais confiance à l'URL indiquée dans le navigateur :
Le module/controller/action demandé reste affiché alors que la requête a bien été redirigée vers le module/controller/action cible ...
Ouf !!!!
Hors ligne
ce n'est pas une redirection au sens propre... tu reste sur la même page, mais tu affiches une autre action. Ça doit poser problème pour nos cher moteur de recherche
Hors ligne