Ajouter les paramètres régionaux et les exigences de tous les itinéraires - Symfony2
J'ai créé une application qui n'était pas destinée à avoir des traductions, mais maintenant j'ai décidé d'ajouter cette fonctionnalité. Le problème est que tous mes itinéraires ressembler à ceci:
goodbye:
pattern: /goodbye
defaults: { _controller: AcmeBudgetTrackerBundle:Goodbye:goodbye }
et je les veux maintenant ressembler à ceci:
goodbye:
pattern: /goodbye/{_locale}
defaults: { _controller: AcmeBudgetTrackerBundle:Goodbye:goodbye, _locale: en }
requirements:
_locale: en|bg
Dois-je vraiment le faire et est-il un moyen de ne plus globale ou automatique, ou au moins ajouter requriements qu'une seule fois, parce qu'ils sont les mêmes pour toutes les url? Merci beaucoup par avance!
OriginalL'auteur Faery | 2013-07-12
Vous devez vous connecter pour publier un commentaire.
Utilisation JMS18nRoutingBundle (la documentation) à cette fin. Pas de chargeur personnalisé, pas de codage ...
Le module est en mesure de préfixe de tous vos itinéraires avec les paramètres régionaux sans rien changer à l'exception de la configuration du bundle. C'est le moyen le plus rapide ( et recommandé ) de la solution pour obtenir vous avez commencé.
Vous pouvez même traduire les routes existantes pour les différents paramètres régionaux.
Une rapide introduction peut être trouvée dans cette coderwall post.
C'est un bon choix si vous voulez traduire votre url. Par exemple : /fr/acheter-une-voiture et /fr/acheter-une-voiture. Sinon c'est un peu de trop à mon avis et de l'aide de l'enracinement.yml
prefix
option est le chemin à parcourir.OriginalL'auteur nifr
Vous pouvez le faire de cette façon, dans votre fichier de configuration
Assez lente de la réaction, mais a une question similaire.
Est agréable de savoir que vous pouvez également déposer l' {_locale} préfixe lors de l'importation de la ressource. Vous serait alors nécessaire d'ajouter {_locale} pour chaque itinéraire spécifique.
De cette façon, vous pouvez prendre le http://www.domain.com sans un locale à partir de l'intérieur de votre bundle, sans avoir à réécrire les exigences et les valeurs par défaut.
Vous pouvez, toutefois, toujours définir l'www.domain.com itinéraire dans votre global de la configuration du routage.
Avertissement: la dernière fois que je l'ai écrit en php a été autour de l'heure de la rédaction de ce commentaire, et Symfony2 a obtenu tout à fait quelques mises à jour depuis. Ce que vous décrivez est plus probable que le comportement attendu. La langue par défaut est important que quand les gens se retrouvent sur votre page d'accueil (www.example.com). Le comportement que vous voulez, c'est très difficile à réaliser car elle nécessiterait de symfony à savoir que le deuxième paramètre dans votre parcours est un chemin, plutôt que d'une langue.
Ce n'est pas une réponse à la question. Veuillez lire les questions en premier. La question est de savoir comment éviter d'ajouter des paramètres régionaux de configuration pour chaque itinéraire.
N'est-ce pas le site de configuration à l'échelle du préfixe de toutes les routes stockées dans un "@CustomSiteBundle/Resources/config/routing.yml"? Corrigez-moi si je me trompe, je n'ai pas utilisé le php dans les 5 ans.
OriginalL'auteur Chris B.
La meilleure solution, au lieu de mettre les exigences de toutes les routes ou étendue globale consiste à utiliser EventListener et rediriger l'utilisateur dans la même voie, mais avec des paramètres régionaux pris en charge, dans l'exemple:
Et
services.yml
Dans
parameters.yml
vous pouvez spécifier les paramètres régionaux pris en charge:peut-on utiliser des shortcodes pour les paramètres régionaux au lieu de en_US, juste fr?
aussi pouvez-vous nous montrer ce que les routes ressemblent à des annotations et comment sa censé ressembler? Je n'arrive pas à obtenir que cela fonctionne.
OriginalL'auteur Athlan
Configurer symfony pour la localisation:
Ajouter la localisation de la session(veuillez noter que la convention est /locale/action):
Alternativement locale peut être réglée manuellement:
app/config/config.yml
Dans votre réponse:
Configurer la localisation des messages fichiers localisés:
messages.bg
messages.fr
Plus sur le sujet: Officiel documentation symfony
OriginalL'auteur Sam Aleksov
Je pense que vous avez besoin d'un chargeur personnalisé extension de la classique config chargeur (Symfony\Component\Config\Loader\Loader) et de manipuler le modèle
http://symfony.com/doc/current/cookbook/routing/custom_route_loader.html
vérifier le premier exemple, je n'ai pas encore essayé, mais je suis assez sûr qu'elle va s'adapter à votre problème.
OriginalL'auteur ROLO
Vous pouvez le voir, cette solution: https://stackoverflow.com/a/37168304/6321297
La
{_local}
paramètre en route doit être dans le dossier app/config fichier de routage si vous voulez l'appliquer à tous vos itinéraires.Cette solution utilise un écouteur d'événement pour rediriger vers la bonne url, si il n'y a pas de
{_local}
dans l'url:Changement
yoursite.com/your/route
àyoursite.com/{_locale}/your/route
Il fonctionne avec ou sans params.
OriginalL'auteur Baptiste LEVESQUE