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

Symfony PHP Discussion :

Site multiple pays


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Par défaut Site multiple pays
    Bonjour à tous,

    Je viens vers vous car je travaille sur un site multi pays (une dizaine) et il se pose la question pour bien gérer le routing puisque les urls sont différentes d'un pays à l'autre.

    Historiquement, j'étais sur un framework maison où tous mes routes étaient dans des fichiers :
    - fr.htaccess
    - es.htaccess
    - de.htaccess
    - ...
    Puis, dans Apache2, j'ai un répertoire par pays où j'ai des liens symboliques de .htaccess => fr.htaccess (par exemple).

    Avec symfony, je voudrais pouvoir conserver ce principe en mettant mes règles dans mes fichiers .htaccess comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^XXX$ %{ENV:BASE}/index.php?controller=XXX&action=XXX [L]
    Le problème est que je trouve pas comment passer le controller souhaité et l'action souhaitée au fichier index.php. Avez-vous une idée svp ?

    Merci de votre aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    bonjour,

    les routes en SF4 sont internationalisables.
    en voici un extrait de la doc:
    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
    class DefaultController extends Controller
    {
        /**
         * @Route({"en": "/contact-us", "fr": "/nous-contacter"}, name="contact")
         */
        public function contact(Request $request)
        {
            //renvoie la locale de l'utilisateur( lang, pays)
            //$request->getPreferredLanguage();
     
          // langue de l'utilisateur
          // $request->getLocale()
        }
     
     
    }
    pour appeler la route dans la vue twig:
    Code twig : Sélectionner tout - Visualiser dans une fenêtre à part
     <a class="nav-link" href="{{ path('contact') }}">text-proventant-du-fichier-de-traduction</a>

    https://symfony.com/blog/new-in-symf...alized-routing

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Par défaut
    Bonjour,

    Merci pour ce retour.

    J'ai tenté avec cela mais je vais avoir plus d'une dizaine de routes dans mon annotation et je ne trouve pas ça très joli ... (surtout que mes routes sont assez longues)

    Dans ton exemple, on peut accéder à l'url /contact-us en étant sur la version française et /nous-contacter sur la version anglaise.

    Y'a-t-il une solution pour que l'url ne puisse pas être accessible dans les deux langues stp ?

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    Les annotations ne sont pas obligatoires, elles ne font pas partie de Symfony 4 c'est une lib à part.A la place tu peux choisir le routage par configuration supportée par défaut par Symfony.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Dans ton exemple, on peut accéder à l'url /contact-us en étant sur la version française et /nous-contacter sur la version anglaise.
    quasiment tous les sites i18n proposent aux internautes la possibilité de choisir la langue si celle proposée par le site ne leur convient pas à moins que ton site propose des services spécifiques à chaque pays.Dans ce cas la seule information(langue, pays) fournie par le navigateur reste peu fiable car modifiable à souhait. Seule la localisation par IP peut identifier(à 90%) de manière certaine un internaute et une extension comme GeoIp peut faire l'affaire.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Par défaut
    Merci pour ta réponse !

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/08/2009, 19h05
  2. Sites multiples sur une seule IP
    Par isildur37 dans le forum Apache
    Réponses: 3
    Dernier message: 20/03/2009, 13h11
  3. Sites multiples avec domaines et IP
    Par sovitec dans le forum IIS
    Réponses: 2
    Dernier message: 10/04/2008, 11h38
  4. Site non payé, quel recours ?
    Par pilouchka dans le forum Droit
    Réponses: 23
    Dernier message: 01/08/2007, 16h28
  5. Développement : ouverture site par pays
    Par Ankhnaos dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 25/03/2007, 19h46

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