Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 07-04-2012 10:57:04

Florian1987
Membre
Lieu: Garancières, Yvelines
Date d'inscription: 28-02-2010
Messages: 13

[Zend_Controller_Router][1.11.11] - Valeurs par défaut en session

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 :

Code:

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 :

Code:

[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 :

Code:

[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 :

Code:

; 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

 

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