IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC PHP Discussion :

Ajout du paramètre langue dans l'url devant le controlleur et l'action


Sujet :

MVC PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 38
    Points : 71
    Points
    71
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ....

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    Pour obtenir ce fonctionnement, tu peux utiliser un Zend_Controller_Router_Route :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $route = new Zend_Controller_Router_Route(':lang/:controller/:action/*',
        array('module' => 'default',
            'controller' => 'index',
            'action' => 'index');
    $router = $frontController->getRouter();
    $router->addRoute('default', $route);
    $frontController->setRouter($router);
    Cette route ne fonctionnera que si tu n'as pas de modules, mais ça te donne une idée de la marche à suivre...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 38
    Points : 71
    Points
    71
    Par défaut Intrégration de Zend_Navigation_Page
    Le bootstrap fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 98
    Points : 86
    Points
    86
    Par défaut
    Bonjour,

    Je remonte ce topic car j'ai exactement le même problème.
    Comment faire garder à Zend_Navigation le paramètre de langue svp?

    Bonne journée,
    Omageus

Discussions similaires

  1. [1.x] Conserver le paramètre de la langue dans l'url
    Par patwon dans le forum Symfony
    Réponses: 3
    Dernier message: 17/09/2010, 17h34
  2. Réponses: 6
    Dernier message: 27/08/2008, 13h58
  3. Passer des paramètres à SugarCRM dans l'url
    Par adilooo dans le forum SugarCRM
    Réponses: 0
    Dernier message: 28/04/2008, 17h48
  4. Réponses: 0
    Dernier message: 09/04/2008, 10h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo