我想打开我的网站:
所以我把这段代码放在routing.yml
:
teach:
resource: "@TeachBundle/Controller/"
type: annotation
prefix: /{_locale}
requirements:
_locale: "|en|fa"
我的控制器是这样的:
/**
* @Route("/mrg")
*/
public function mrgAction(Request $request)
{
$lang=$request->getLocale();
return new Response("<html><body>Your language: <b> $lang </b></body></html>");
}
所有网址都有效但http://127.0.0.1:8000/mrg
不起作用并返回:
找不到“GET / mrg”的路线
如果我尝试打开http://127.0.0.1:8000/mrg
然后打开http://127.0.0.1:8000/en/mrg
,我需要使用默认语言。
有没有解决方案可以解决这个问题?
答案 0 :(得分:0)
试试这个:
{_locale}
/**
* @Route("/{_locale}/mrg")
*/
public function mrgAction(Request $request)
{
$lang=$request->getLocale();
return new Response("<html><body>Your language: <b> $lang </b></body></html>");
}
# app/config/config.yml
framework:
default_locale: en
如果不起作用,您可以展示自己的app/config/routing.yml
。
答案 1 :(得分:0)
在路由配置中添加defaults
选项,以设置默认语言环境(如果未在控制器@Route
中设置:
teach:
resource: "@TeachBundle/Controller/"
type: annotation
prefix: /{_locale}
requirements:
_locale: "|en|fa"
defaults:
_locale: 'en' # or '%locale%'
答案 2 :(得分:0)
我建议您使用: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() { }
}