Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 16-09-2008 15:14:09

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Redirection vers une route dans un controlleur

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 çà :

Code:

<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 :

Code:

 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 :

Code:

$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 :

Code:

<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 ?

Code:

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

 

#2 17-09-2008 16:20:43

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Redirection vers une route dans un controlleur

J'ai une sale méthode que j'aime pas, mais que je fais quand même

Code:

$this->_redirect($this->view->url(/*cf doc du view helper url...*/)));

Hors ligne

 

#3 17-09-2008 20:42:28

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Re: Redirection vers une route dans un controlleur

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 :

Code:

$this->_redirect($this->view->url(array(1 => '0'), 'maPropreRouteRegex'));

et ma gestion des routes :

Code:

$frontController->getRouter()->addConfig($configRouterXML,'routes');

avec une partie du fichier XML :

Code:

<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

 

#4 17-09-2008 22:04:55

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Redirection vers une route dans un controlleur

Hello,

Mr Moox, dans une action tu peux appeler redirector pour retrouver l'API de type view->url():

Code:

class MonController extends Zend_Controller_Action
{
    function monAction()
    {
        $this->_helper->redirector('action', 'controleur', 'module', array('param1'=>'valeur1'));
    }
}

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#5 17-09-2008 22:58:26

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Re: Redirection vers une route dans un controlleur

oui, çà marche aussi smile, 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

 

#6 18-09-2008 08:55:20

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Redirection vers une route dans un controlleur

Je me doutais bien qu'il y'a avait uné méthode "propre" du redirector smile
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

 

#7 18-09-2008 09:14:17

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Re: Redirection vers une route dans un controlleur

oui, plus propre, mais moins sécurisé... sad

Pour mon string (enfin, pas le mien smile), 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

 

#8 18-09-2008 10:34:04

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Redirection vers une route dans un controlleur

Moi en général, je récupère les paramètres en début d'action (voir init() de controller)...

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages