Ajout du paramètre langue dans l'url devant le controlleur et l'action
Bonjour,
Je travaille sur un site un système multi langue. Pour des raisons de référencement et de convivialité je veux avoir des urls du type:
http://localhost/fr/controlleur/action
http://localhost/fr/module/controlleur/action
Je n'arrive pas à récupérer à faire fonctionner un router qui me permet ce comportement.
Je penses que je suis parti dans une mauvaise direction.
Je vous mets les quelques lignes de mon bootstrap
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
// mise en place des répertoires et chargement des classes
set_include_path('../application/library:../application/models/');
include "Zend/Loader.php";
Zend_Loader::registerAutoload();
Zend_Session::start();
$config = new Zend_Config_Ini('../application/configuration/configuration.ini');
$db = Zend_Db::factory($config->bdd);
Zend_Db_Table::setDefaultAdapter($db);
// mise en cache de la structure de la base
// D'abord, configurons le cache
$frontendOptions = array('automatic_serialization' => true);
$backendOptions = array('cache_dir'=> $config->cache_db->dossier);
$cache_db = Zend_Cache::factory('Core','File',$frontendOptions,$backendOptions);
// Puis passons le comme objet de cache par défaut
Zend_Db_Table_Abstract::setDefaultMetadataCache($cache_db);
// gestion de la langue
Zend_Registry::set('lang', $lang);
$translate = new Zend_Translate('ini','../application/traduction/'.Zend_Registry::get('lang').'.ini');
//
$router = new Zend_Controller_Router_Rewrite();
// setup controller
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->setRouter($router);
$frontController->addControllerDirectory('../application/site/controllers','default');
$frontController->addControllerDirectory('../application/administration/controllers','administration');
Zend_Layout::startMvc(array('layoutPath'=>'../application/layouts'));
$frontController->dispatch(); |
Une fois la solution trouvée elle pourrait être étendu à plein de concept, css image ....
Intrégration de Zend_Navigation_Page
Le bootstrap fonctionne.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
// setup controller
$router = new Zend_Controller_Router_Rewrite();
$router->addRoute(
"basic",
new Zend_Controller_Router_Route(
"/:language/:module/:controller/:action/*",
array(
//"language"=>"fr",
"language"=>"fr",
"module"=>"index",
"controller"=>"index",
"action"=>"index")
)
);
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->setRouter($router); |
Maintenant un autre problème apparait, comment conserver la paramètre de langue d'une page à l'autre. J'utilise le Zend_Navigation pour créer mes urls, je conserve la langue par défaut de mon router.
Comment faire pour régler ce problème?