2017-07-20 1 views
2

Je veux ouvrir mes sites comme ceux-ci:comment utiliser locale par défaut routes symfony3.4

J'ai donc mis ce code dans routing.yml:

teach: 
    resource: "@TeachBundle/Controller/" 
    type:  annotation 
    prefix: /{_locale} 
    requirements: 
     _locale: "|en|fa" 

et mon contrôleur est comme ceci:

/** 
* @Route("/mrg") 
*/ 
public function mrgAction(Request $request) 
{ 
    $lang=$request->getLocale(); 

    return new Response("<html><body>Your language: <b> $lang </b></body></html>"); 
} 

Tous les urls ont travaillé, mais http://127.0.0.1:8000/mrg ne fonctionne pas et retourne:

Aucun itinéraire pour "GET/MRG"

J'ai besoin d'utiliser la langue par défaut par exemple si j'essaie d'ouvrir http://127.0.0.1:8000/mrg puis ouvrez http://127.0.0.1:8000/en/mrg.

Y at-il une solution pour résoudre ce problème?

Répondre

0

Essayez ceci:

{_locale}

/** 
* @Route("/{_locale}/mrg") 
*/ 
public function mrgAction(Request $request) 
{ 
    $lang=$request->getLocale(); 

    return new Response("<html><body>Your language: <b> $lang </b></body></html>"); 
} 

Setting a Default Locale

# app/config/config.yml 
framework: 
    default_locale: en 

Si ne fonctionne pas, pouvez-vous montrer votre app/config/routing.yml.

1

option Ajouter defaults à votre configuration de routage pour définir les paramètres régionaux par défaut si ce n'est pas défini dans vos contrôleurs @Route s:

teach: 
    resource: "@TeachBundle/Controller/" 
    type:  annotation 
    prefix: /{_locale} 
    requirements: 
     _locale: "|en|fa" 
    defaults: 
     _locale: 'en' # or '%locale%' 
+0

Non ça ne marche pas je l'ai déjà essayé – minttux

0

conseils que je vous d'utiliser: BeSimpleI18nRoutingBundle

https://github.com/BeSimple/BeSimpleI18nRoutingBundle

use BeSimple\I18nRoutingBundle\Routing\Annotation\I18nRoute; 

class NoPrefixController 
{ 
    /** 
    * @I18nRoute({ "en": "/welcome", "fr": "/bienvenue", "de": "/willkommen" }, name="homepage") 
    */ 
    public function indexAction() { } 
}