路线上的区域设置不作为参数

Not working locale on route as parameter

我的路线有问题,当尝试访问主页时,出现错误:

"No route found for "GET /"

我的配置文件(app/config/config.yml):

parameters:
locale: en

framework:
#esi: ~
translator: { fallbacks: ['%locale%'] }
router:
    resource: '%kernel.project_dir%/app/config/routing.yml'
    strict_requirements: ~
default_locale: '%locale%'

我的路由文件(app/config/routing.yml)

web_client:
resource: "@DesktopBundle/Resources/config/routing_web.yml"
prefix: /{_locale}
defaults: { _locale: en}
requirements:
    _locale: en|fr

我的路由第二个文件(src/Resources/config/routing_web.yml)

home_page:
path: /
defaults: { _controller: DesktopBundle:Website/HomePage:homePage}

我的操作:

public function homePageAction(Request $request)
{
    return $this->render('DesktopBundle:Web:layout.html.twig', array());
}

当我尝试访问 base url 时出现 404 错误。

当然你会遇到 404 错误,AFAIU 你在路由前加上 _locale 然后用 home_page[= 读取你的资源文件24=] 数据,所以路由将是这样的:

example.com/en/ <- 然后你会得到你的主页,因为它匹配你的前缀 (/{_locale}/) 和主页路径 (/ )

要在进入 example.com 后获取 homePageAction,您需要将 routing.yml 中的主页路由移动到 web_client 上方。

编辑: 要重定向阅读此 doc 你需要这样的东西:

home_page:
    pattern: /
    defaults:
        _controller: FrameworkBundle:Redirect:urlRedirect
        path: /en
        permanent: true

web_client:
    resource: "@DesktopBundle/Resources/config/routing_web.yml"
    prefix: /{_locale}
    defaults: { _locale: en}
    requirements:
        _locale: en|fr