Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Salut à tous,
Apres avoir vu un tuto video sur le Zend_Router, je m'y suis mis. J'ai utilisé un bout du code de Zend_Auth .
Par contre, je ne sais pas comment faire une redirection vers une route dans le controller. Je sais que dans le view, je fais comme çà :
<a href="<?php echo $this->url(array('partieStaticDisplay' => 'valeur1'), 'menuRoute') ?>">Tout de suite la suite</a>
Dans le _redirect, j'aimerai utiliser une route prédéfinie :
if ($result->isValid()) { // success : store database row to auth's storage system // (not the password though!) $data = $authAdapter->getResultRowObject(null, 'password'); $auth->getStorage()->write($data); $this->_redirect('/menu/display'); } else {
Mes routes :
$frontController->setControllerDirectory(array( 'auth' => _APP_PATH_ . '/application/modules/auth/controllers', 'actualites' => _APP_PATH_ . '/application/modules/actualites/controllers', 'menu' => _APP_PATH_ . '/application/modules/menu/controllers', 'users' => _APP_PATH_ . '/application/modules/users/controllers' )); $frontController->setBaseUrl('/'); $frontController->setDefaultModule('auth'); $frontController->setDefaultControllerName('Auth'); $frontController->setDefaultAction('login'); // ROUTEUR ///////////////////////////////////////////////////////// $frontController->getRouter()->addConfig($configRouterXML,'routes');
un bout du XML :
<menuRoute> <type>Zend_Controller_Router_Route</type> <route>partieStaticDisplay</route> <defaults> <controller>menu</controller> <action>display</action> </defaults> </menuRoute>
Donc comment je peux faire, apress l'authentification, pour aller sur la page du menu, en vérifiant que l'authentification a bien été faite ?
class MenuController extends Zend_Controller_Action { function init() { $this->initView(); $this->view->baseUrl = $this->_request->getBaseUrl(); $this->view->user = Zend_Auth::getInstance()->getIdentity(); } function preDispatch() { $auth = Zend_Auth::getInstance(); if (!$auth->hasIdentity()) { $this->_redirect('auth/login'); } } function displayAction() { $this->view->title = "Bienvenue au menu"; $this->render(); } }
là aussi, le redirect ne sera pas bon ecrit comme çà.
Merci de votre aide.
Fabrice
Hors ligne
Salut,
Merci pour l'info. Cela semble marcher, mais je n'ai pas finalisé.
Pourquoi dis tu que tu n'aimes pas çà ?
Voici mon code :
$this->_redirect($this->view->url(array(1 => '0'), 'maPropreRouteRegex'));
et ma gestion des routes :
$frontController->getRouter()->addConfig($configRouterXML,'routes');
avec une partie du fichier XML :
<maPropreRouteRegex> <type>Zend_Controller_Router_Route_Regex</type> <route>modActualitesRegex/(\d+)</route> <defaults> <module>actualites</module> <controller>actualites</controller> <action>display</action> </defaults> <map> <id_actualite>1</id_actualite> </map> <reverse>modActualitesRegex/%d</reverse> </maPropreRouteRegex>
Hors ligne
Hello,
Mr Moox, dans une action tu peux appeler redirector pour retrouver l'API de type view->url():
class MonController extends Zend_Controller_Action { function monAction() { $this->_helper->redirector('action', 'controleur', 'module', array('param1'=>'valeur1')); } }
A+
Hors ligne
oui, çà marche aussi , mais dans l'url, c'est moins propre et moins sécurisé car on vois le module, le controller, etc...
Maintenant, je cherche comment gérer les parametres des routes, genre mettre des caracteres à la place d'un entier, mais pour l'instant.... pas de piste
Fabrice
Hors ligne
Je me doutais bien qu'il y'a avait uné méthode "propre" du redirector
Merci.
Sinon pour fabrice et son entier en string dans l'url, suffit de faire un encodage dans une autre base (genre base 36 =alpabet+chiffre) mais après tu devras décodé à la main.
Hors ligne
oui, plus propre, mais moins sécurisé...
Pour mon string (enfin, pas le mien ), comme je suis débutant, je ne vois pas bien a quel "endroit" je récupère le parametre, pour le traiter
Merci.
Fabrice
Hors ligne
Pages: 1