Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je suis en train de migrer la configuration de mon Zend_Controller_Router du Bootstrap vers le fichier application.ini pour pouvoir différencier mon $_SERVER['HOSTNAME'] en fonction de l'environnement d'une part et j'essaye de configurer au maximum les composants dans le fichier ini plutôt que dans le Bootstrap.
Fonctionnement des mes URL :
http://:sitename.monsite.com/:language/:module/:controller/:action
Chaque sitename est indépendant et possède ses propres modules, contrôleurs et actions, son propre fichier de configuration Zend_Navigation.
C'est un peu comme si j'avais des sous-applications dans mon projet.
Quand il était configuré dans le Bootstrap, les valeurs par défaut de sitename et language étaient récupérées en session.
Voici l'aide d'action qui me permet de stocker les valeurs en cours de sitename et language :
[lang=php] class My_Controller_Action_Helper_Router extends Zend_Controller_Action_Helper_Abstract { public function preDispatch() { $params = $this->getRequest()->getParams(); $namespace = (defined(APPLICATION_NAME)) ? APPLICATION_NAME : 'Application'; $session = new Zend_Session_Namespace($namespace); $translate = Zend_Registry::get('Zend_Translate'); $sitenames = array('www', 'administration'); if (isset($params['sitename']) && in_array($params['sitename'], $sitenames)) $session->sitename = $params['sitename']; $languages = array('fr','en'); if (isset($params['language']) && in_array($params['language'], $languages)) $session->language = $params['language']; if (!in_array($session->language, $languages)) $session->language = DEFAULT_LANGUAGE; $translate->setLocale($session->language); Zend_Registry::set('Zend_Translate', $translate); } }
Depuis que j'ai passé la configuration dans mon fichier application.ini, je ne sais plus comment récupérer ces valeurs par défaut.
Voici l'ancien _initRouter() de mon Bootstrap :
[lang=php]protected function _initRouter() { $session = new Zend_Session_Namespace(APPLICATION_NAME); $frontController = $this->bootstrap('FrontController') ->getResource('FrontController'); $router = $frontController->getRouter(); $router->removeDefaultroutes(); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':sitename.' . APPLICATION_HOSTNAME, array( 'sitename' => APPLICATION_SITE ) ); $defaultRoute = new Zend_Controller_Router_Route( ':language/:module/:controller/:action', array( 'language' => $session->language, 'module' => 'site', 'controller' => 'index', 'action' => 'index' ) ); $router->addRoute('default', $hostnameRoute->chain($defaultRoute)); }
Voici mon fichier application.ini :
; Router Hostname resources.router.routes.site.type = "Zend_Controller_Router_Route_Hostname" resources.router.routes.site.route = ":sitename.monsite.com" resources.router.routes.site.reqs.sitename = "^(www|administration)$" resources.router.routes.site.defaults.sitename = "www" ; Router Route resources.router.routes.plain.type = "Zend_Controller_Router_Route" resources.router.routes.plain.abstract = "On" resources.router.routes.plain.route = "/:language/:module/:controller/:action" resources.router.routes.plain.reqs.language = "^(fr|en)$" resources.router.routes.plain.defaults.language = "fr" resources.router.routes.plain.defaults.module = "site" resources.router.routes.plain.defaults.controller = "index" resources.router.routes.plain.defaults.action = "index" ; Router Chain resources.router.routes.default.type = "Zend_Controller_Router_Route_Chain" resources.router.routes.default.chain = "site, plain"
Je vous remercie par avance de l'aide que vous pourriez m'apporter.
Hors ligne
Pages: 1