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 :

ZF1.11 - Route et Site multilingue


Sujet :

MVC PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Chef d’entreprise
    Inscrit en
    Mars 2002
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef d’entreprise

    Informations forums :
    Inscription : Mars 2002
    Messages : 212
    Par défaut ZF1.11 - Route et Site multilingue
    Mon application utilise le routage et un plugin de traduction selon le modèle suivant :

    bootstrap.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    protected function _initRouter(){
        $this->bootstrap('frontController');
        $front = $this->getResource('frontController');
        $router = $front->getRouter();
        $router->addConfig(new Zend_Config_Ini(APPLICATION_PATH . '/configs/routes.ini', 'routes'), 'routes');
        return $router;
    }
    routes.ini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    routes.acceuil.type = "Zend_Controller_Router_Route"
    routes.acceuil.route = ":language/acceuil"
    routes.acceuil.defaults.module = frontend
    routes.acceuil.defaults.controller = index
    routes.acceuil.defaults.action = index
    routes.acceuil.defaults.language = fr
    J'utilise également un plugin d'authentification qui vérifie dans une bd si l'utilisateur a accès à la ressource demandée. Une ressource, bien évidemment, est définie par le triplet (Module, Controleur, Action)

    Quand je saisis, http://localhost/fr/acceuil ou http://localhost/en/acceuil ça marche normalement.

    Quand je saisis http://localhost/fr/frontend/index/index le plugin d'authentification me redirige vers la page d'authentification. Cela veut dire qu'il n'a pas bien interprété l'URL et donc il n'a pas reconnu le triplet (Module, Controleur, Action)=(Frontend, index,index).

  2. #2
    Invité de passage
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 1
    Par défaut
    Bonjour,

    Avez-vous trouvé une solution à votre problème? Ou une autre manière d'aborder le sujet?
    Merci.

  3. #3
    Membre éclairé
    Profil pro
    Chef d’entreprise
    Inscrit en
    Mars 2002
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef d’entreprise

    Informations forums :
    Inscription : Mars 2002
    Messages : 212
    Par défaut
    Citation Envoyé par stormblow Voir le message
    Bonjour,
    Avez-vous trouvé une solution à votre problème? Ou une autre manière d'aborder le sujet?
    Merci.
    Malheureusement je n'ai pas de solution.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 77
    Par défaut
    C'est normal, il détecte le module "fr".

    J'ai réussi à trouver une solution en créant une route chainée.
    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
     
    ; route par défaut
     
    resources.router.routes.defaultmodule.type = Zend_Controller_Router_Route_Module
    resources.router.routes.defaultmodule.abstract = Off
    resources.router.routes.defaultmodule.defaults.module = "default"
    resources.router.routes.defaultmodule.defaults.controller = "index"
    resources.router.routes.defaultmodule.defaults.action = "index"
     
    resources.router.routes.language.type = Zend_Controller_Router_Route
    resources.router.routes.language.route = ":language"
    resources.router.routes.language.reqs.language = "^(fr|en)$"
    resources.router.routes.language.defaults.module = "default"
    resources.router.routes.language.defaults.controller = "index"
    resources.router.routes.language.defaults.action = "index"
     
    ; route perso
    routes.acceuil.type = "Zend_Controller_Router_Route"
    routes.acceuil.route = ":language/acceuil"
    routes.acceuil.defaults.module = frontend
    routes.acceuil.defaults.controller = index
    routes.acceuil.defaults.action = index
    routes.acceuil.defaults.language = fr
    resources.router.routes.default.type = Zend_Controller_Router_Route_Chain
    resources.router.routes.default.chain = "language, defaultmodule"
    Pense à ajouter tes langues.

  5. #5
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut
    Salut,

    J'ai un soucis avec ça. J'ai grosso modo les mêmes routes que toi Blount, sauf que moi je dois traduire mes routes (pour le moment uniquement controller et action, mais sûrement module aussi après), il faut donc ajouter un :@ devant.

    Le soucis c'est que le seul type de route qui accepte les traductions est la route de type Zend_Controller_Router_Route, dans lequel je dois mettre comme route :

    :lang/:module/:@controller/:@action

    Ce qui signifie que je ne peux plus chaîner mon Zend_Controller_Router_Route_Module avec le Zend_Controller_Router_Route (le module n'est pas reconnu).

    J'ai trouvé une solution qui marche mais qui ressemble plus à du hack qu'à une solution propre, en l'occurence créer deux routes : une sans module (cas du module default), et une avec module. Le soucis c'est que je suis obligé de recopier les différents paramètres (notamment les reqs de language), pas très propre quoi.

Discussions similaires

  1. Site multilingue - méthode ?
    Par khephren dans le forum Général Conception Web
    Réponses: 12
    Dernier message: 21/06/2016, 17h18
  2. [Cookies] problème avec site multilingue
    Par lacfab dans le forum Langage
    Réponses: 13
    Dernier message: 30/12/2005, 23h10
  3. [Tableaux] Site multilingue
    Par francis m dans le forum Langage
    Réponses: 15
    Dernier message: 10/12/2005, 01h58
  4. Site multilingue : comment s'y prendre ?
    Par sg-40 dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 26/04/2005, 14h40
  5. [C#] Mise en place d'un site multilingue
    Par regbegpower dans le forum ASP.NET
    Réponses: 6
    Dernier message: 19/03/2004, 19h15

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