Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour, le titre de ce thread n'étant pas forcément limpide je formule en bref mon problème : Je n'y connais pas grand chose en routage sur Zend Framework.
Plus sérieusement, je voudrais créer sur mon site des espaces de nom dynamiques dans l'url. Plus clair encore, je voudrais que pour chaque utilisateur inscrit sur mon site, on puisse accéder à son espace à l'adresse :
http://www.monsite.com/benjamin/
Dans mon site, chaque membre peut ajouter des collections de dvd, cassettes, bandes dessinées donc il devrait etre possible d'accéder à
http://www.monsite.com/benjamin/cassettes/
http://www.monsite.com/benjamin/bds/
http://www.monsite.com/benjamin/dvds
Mais je ne sais pas du tout comment faire ceci, je sais juste qu'il faut manipuler le routage. Je ne sais pas non plus où manipuler le routage.
Je pencherai à un truc dans le bootstrap tel que ceci, sauf peut etre pour le Zend_Controller_Front::getInstance() :
protected function _initUserDomains() { $router = Zend_Controller_Front::getInstance()->getRouter(); $users = new Default_Model_User(); foreach ($users->fetchAll() as $user) { $router->addRoute ( /* ????????????????????? */ ); } }
Hors ligne
Tu peux faire des routes de ce type:
dans routes.ini par exemple:
en cosidérant une url complète du type:
http://www.monsite.com/profil/name/benj … cassettes/
controller => profil
action => index
variable name = benjamin
variable media = cassettes
routes.profil.route = "profil/:name/:media/" routes.profil.defaults.controller = profil routes.profil.defaults.action = index
dans ton Bootstrap.php
public function _initRoutes()
{
$frontController = Zend_Controller_Front::getInstance();
$routeur = $frontController->getRouter();
$config_routes = new Zend_Config_Ini(APPLICATION_PATH.'/config/routes.ini');
$routeur->addConfig($config_routes, 'routes');
}
Hors ligne
cette solution me convient peu. Je veux bien pass par /profile/benji mais /profile/name/benji je trouve ca nul, quelqu'un a une autre solution ?
Y a pas moyen genre de faire http://www.monsite.com/benjamin/:controller/:action ?
Et pouvoir récupérer ma variable dont la valeur est, dans ce cas, "benjamin" ?
Dernière modification par gedeon555 (25-06-2009 22:07:38)
Hors ligne
Pour l'instant j'ai fait :
public function _initRoutes() { $frontController = Zend_Controller_Front::getInstance(); $routeur = $frontController->getRouter(); $routeur->addRoute ( 'profile', new Zend_Controller_Router_Route('/profiles/:name/:controller/:action', array('controller' => 'index', 'action' => 'index')) ); }
Mais quand j'essaie d'accéder à la page http://www.monsite.com/profiles/benji j'obtiens le joli message :
Fatal error: Uncaught exception 'Zend_Controller_Router_Exception' with message 'name is not specified' in library\Zend\Controller\Router\Route.php:349 Stack trace: #0 library\Zend\Controller\Router\Rewrite.php(433): Zend_Controller_Router_Route->assemble(Array, true, true) #1 library\Zend\View\Helper\Url.php(49): Zend_Controller_Router_Rewrite->assemble(Array, NULL, true, true) #2 library\Zend\View\Abstract.php(341): Zend_View_Helper_Url->url(Array, NULL, true) #3 [internal function]: Zend_View_Abstract->__call(Array, Array) #4 application\modules\admin\layouts\scripts\layout.phtml(26): Zend_View->url('url', Array) #5 library\Zend\View.php(107): include('G:\Work\Workspa...') #6 library\Zend\View\Abstract.php(832): Zend_View-> in library\Zend\Controller\Router\Route.php on line 349
Quand je fais un "Zend_Debug::dump($route->match('/profiles/benji'));
J'obtient ceci pourtant :
array(3) { ["name"] => string(5) "benji" ["controller"] => string(5) "index" ["action"] => string(5) "index" }
Dernière modification par gedeon555 (25-06-2009 22:38:20)
Hors ligne
là solution que je t'ai proposé forme les URL que tu souhaite...
L'url longue et moche
http://www.monsite.com/profil/name/benj … cassettes/
devient
http://www.monsite.com/profil/benjamin/cassettes/
Hors ligne
Pages: 1