Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-03-2009 17:27:34

bgy
Membre
Lieu: Aix en Provence
Date d'inscription: 23-02-2009
Messages: 14
Site web

[Zend_Controller_Router_Route_Hostname] [1.7] et autre...

Bon, très bien, mon sujet n'est pas très clair.
Pourtant c'est simple.

J'ai une application qui fonctionne sur le système suivant :
Un site général, présentant le site, ses fonctionnalités, du blabla.
Et j'ai des sous domaines qui correspondent à des comptes X.
Un peu comme, les blogs.

J'ai donc une adresse www.monsite.com et des adresses du type unblog.monsite.com

Pour cela, wildcard DNS + virtualhosts, pas de problème.

Pour choisir le comportement de mon application, j'ai pensé utilisé Zend_Controller_Router_Route_Hostname pour récupérer le nom du sousdomaine. J'ai fait comme ceci :


Code:

$router = $this->_front->getRouter();
$hostnameRoute = new Zend_Controller_Router_Route_Hostname(':blogname.monsite.com', array());
$plainPathRoute = new Zend_Controller_Router_Route_Static('');
$router->addRoute('blog', $hostnameRoute->chain($plainPathRoute));

J'avoue avoir suivi bêtement les indications fournis par la doc.

Jusque là, ça fonctionne puisque que quand je fais $this->_getParam('blogname'); j'ai bien le nom du sous domaine correspondant.

Ensuite j'ai pensé créer un plugin avec Zend_Controller_Plugin_Abstract et surcharger le preDispatch() pour selectionner le controlleur/action.
Dans lequel j'ai une simple condition

Code:

if ($this->getRequest->getParam('blogname') != 'www')

Cependant, dans ma classe d'Initialisation, j'ai ça :

Pour le sous domaine

Code:

        $router = $this->_front->getRouter();
        $hostnameRoute = new Zend_Controller_Router_Route_Hostname(':blogname.monsite.com', array());
        $plainPathRoute = new Zend_Controller_Router_Route_Static('');
        $router->addRoute('blog', $hostnameRoute->chain($plainPathRoute));

Je voulais que lorsque l'on appelle le site avec unblog.monsite.com/uneAction/unparam/unevaleur l'action correspondante soit récupéré

Code:

        $router->addRoute('blogaction', new Zend_Controller_Router_Route_Regex('/(.+)', null, array(1 => 'blogaction')));

Simplement pour avoir des url du type www.monsite.com/user/89-Nom+Prénom/

Code:

        $router->addRoute('user', new Zend_Controller_Router_Route('user/:userid', array('controller' => 'user' , 'action' => 'profile')));

Utile pour renvoyer l'utilisateur vers la page d'où il vient (par exemple pour le login)

Code:

        $router->addRoute('from', new Zend_Controller_Router_Route_Regex('from/?(.+)?', null, array(1 => 'referer')));

Mon problème numéro 1 est que lorsque j'appelle le site monblog.monsite.com je récupère bien 'monblog' avec $this->_getParam('blogname'); mais si j'appelle monblog.monsite.com/uneAction $this->_getParam('blogname') renvoit NULL

J'ai essayé en desactivant toutes les routes qui ne concernant pas l'host (donc 'from', 'user' et 'blogaction' ) et cela ne change rien, dès que j'appelle autre si que la base du site, $this->_getParam('blogname') renvoit NULL

Si quelqu'un à une idée plus judicieuse sur la façon de mettre en place ce système et/ou sur la raison pour laquelle je n'arrive pas à récupérer le sous domaine à chaque coup...

Aussi, question 'subsidiaire' j'envisage d'utiliser les sessions pour centraliser l'authentification à 'www.monsite.com' mais être également disponible pour 'unblog.monsite.com' cela sera t'il possible ?
Quel comportant adopter pour rendre cela possible ?

Merci d'avance de vos conseils.

Dernière modification par bgy (03-03-2009 20:06:17)


http://borisguery.com | Fork me on Github | Follow me on Twitter | Check out my tips on Coderwall | More About me

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