Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 28-02-2010 22:17:33

TomaCraCra
Membre
Date d'inscription: 10-12-2009
Messages: 11

[Zend route] route multi-utilisateurs

Bonjour,

Je souhaiterai gérer plusieurs utilisateurs sur mon site avec URL personnalisées pour chaque utilisateur :
monsite.com/mon_user1
monsite.com/mon_user2

Ceci dit j'ai déjà des contrôleurs existants (index, inscription, membre...)

J'aurai souhaité faire une route du genre :
Si le nom du contrôleur est invalide alors c'est le contrôleur user qui est utilisé.

Est-il possible de créer ce type de route ?
Je ne souhaite pas avoir une URL de type monsite.com/user/mon_user1 mais bien monsite.com/mon_user1

Dans le bootstrap j'arrive à lister tous les contrôleurs mais je n'arrive pas à lister le contrôleur courant.

Merci d'avance.

Hors ligne

 

#2 01-03-2010 14:48:38

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [Zend route] route multi-utilisateurs

Essaie avec un truc du genre:

Code:

$route = new Zend_Controller_Router_Route(
    ':username',
    array(
        'controller' => 'profile',
        'action'     => 'userinfo'
    )
);

PS: le routeur fonctionne avec LIFO, alors cette route doit être entrée dans les premières.


ref: http://framework.zend.com/manual/fr/zen … s.standard

Hors ligne

 

#3 01-03-2010 21:56:25

TomaCraCra
Membre
Date d'inscription: 10-12-2009
Messages: 11

Re: [Zend route] route multi-utilisateurs

Le problème avec cette route c'est que cela me casse toutes mes autres routes même celles standard... :(

Une URL de type : monsite.com/inscription
me dirige vers le contrôleur profile :( au lieu de me diriger vers le contrôleur inscription...

Hors ligne

 

#4 01-03-2010 23:38:01

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [Zend route] route multi-utilisateurs

Tu dois alors inverser l'ordre dans lequel tes routes sont insérées.

Hors ligne

 

#5 02-03-2010 13:12:26

TomaCraCra
Membre
Date d'inscription: 10-12-2009
Messages: 11

Re: [Zend route] route multi-utilisateurs

Mais c'est ma seule route dans mon bootstrap, je n'ai pas d'ordre à gérer...
Si j'ajoute cette route cela m'écrase les routes par défaut de Zend.

Dans mon bootstrap j'ai exactement :

Code:

    protected function _initRouter() {

        $front = Zend_Controller_Front::getInstance();        
        $router = $front->getRouter();
        
        $router->addRoute('user', new Zend_Controller_Router_Route(':username', array('controller' => 'user')));        
    }

Hors ligne

 

#6 02-03-2010 16:29:57

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [Zend route] route multi-utilisateurs

ahhh je vois

J'aurai souhaité faire une route du genre :
Si le nom du contrôleur est invalide alors c'est le contrôleur user qui est utilisé

Tu devrais pouvoirça en héritant du Dispatcher et en le modifiant wink

bonne chance

Hors ligne

 

#7 03-03-2010 13:58:03

TomaCraCra
Membre
Date d'inscription: 10-12-2009
Messages: 11

Re: [Zend route] route multi-utilisateurs

N'étant pas super pro je n'ai aucune idée de comment faire cela sad
Ça me parait bizarre qu'une condition aussi simple soit si difficile à mettre en place sad

SI contrôleur est invalide ALORS contrôleur = user

Je commence à penser que ce n'est pas possible de faire un truc pareil avec Zend...

Dernière modification par TomaCraCra (03-03-2010 14:37:38)

Hors ligne

 

#8 03-03-2010 19:59:10

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [Zend route] route multi-utilisateurs

S'il te manque des base en orienté objet tu devrais commencer par là wink

Il faut que tu redéfinisses la méthode dispatch(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response) du Zend_Controller_Dispatcher_Standard de sorte que SI le contrôleur est invalide tu le changes pour user...

ALTERNATIVE CHIANTE
tu peux ajouter des routes statiques (inscription...) après ta route user

Bonne chance

Hors ligne

 

#9 04-03-2010 13:26:31

TomaCraCra
Membre
Date d'inscription: 10-12-2009
Messages: 11

Re: [Zend route] route multi-utilisateurs

Je ne vois pas où la redéfinir la méthode dispatch... sad

Hors ligne

 

#10 04-03-2010 14:22:25

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [Zend route] route multi-utilisateurs

Tu dois te créer une class exemple: My_Controller_Dispatcher_Standard, dans cette classe tu redéfinis la méthode disptach

N'oublie pas de changer le dispatcher dans le Zend_Controller_Front

Hors ligne

 

#11 04-03-2010 14:38:12

TomaCraCra
Membre
Date d'inscription: 10-12-2009
Messages: 11

Re: [Zend route] route multi-utilisateurs

Dernière petite chose, à quel endroit dois-je créer une instance de cette classe ? smile

Hors ligne

 

#12 04-03-2010 14:42:18

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [Zend route] route multi-utilisateurs

dans le bootstrap de ton application

Hors ligne

 

#13 04-03-2010 18:49:14

TomaCraCra
Membre
Date d'inscription: 10-12-2009
Messages: 11

Re: [Zend route] route multi-utilisateurs

Ça y est, j'ai enfin réussi...
merci pour ton aide ca m'a quand même éclairé smile

j'ai exactement fais ce que tu as dis :

1/Dans mon bootstrap j'ai mis j'ai fais un setDispatcher pour mettre le mien :

Code:

    protected function _initFront() { 
        $controller = new Controller();
     
        $front = Zend_Controller_Front::getInstance();
        $front->setDispatcher($controller);
    }

($controller est ma classe perso, j'ai sans doute abusé du nom...)

2/Puis j'ai redéfini la méthode dispatch dans ma classe perso :

Code:

    public function dispatch(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response)
    {
        $controllerName = $request->getControllerName();
         $allControllerNames = $this->getAllControllersNames();
        
        if(!in_array($controllerName, $allControllerNames)) {
            $request->setControllerName("user");
        }
     
        parent::dispatch($request, $response);
    }

Et hop tout fonctionne comme je le voulais...

Hors ligne

 

#14 07-03-2010 08:11:38

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [Zend route] route multi-utilisateurs

parfait, tu peux mettre résolu dans le titre smile

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