Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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 :
$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
if ($this->getRequest->getParam('blogname') != 'www')
Cependant, dans ma classe d'Initialisation, j'ai ça :
Pour le sous domaine
$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é
$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/
$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)
$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)
Hors ligne
Pages: 1