Symfony 4.1 i18n 路由前缀:排除路由

Symfony 4.1 i18n route prefix: exclude route

我在 Symfony 4.1 上有一个 i18n 项目 运行。

我想实现一些路由,例如:

在此 article 之后,我使用注释来处理路由,并为我的注释路由设置了一个全局前缀:

site:
    resource: '../src/Controller/'
    type: annotation
    prefix:
        en: '/en'
        fr: '/fr'

这样,'../src/Controller/'注释中定义的所有路由都带有前缀,导致我的"Choose language"页面和主页冲突。

我想从 i18n 前缀中排除 "Choose language" 页面,这样当主页可以保留在 /fr 或/zh.

有什么想法可以实现吗?

annotations.yaml 顶部定义此路由,不带前缀选项:

_choose_language:
    path: /
    controller: App\Controller\ChooseLanguageController

site:
    resource: '../src/Controller/'
    type: annotation
    prefix:
        en: '/en'
        fr: '/fr'

并且不要为这个特殊控制器使用路由注释:

class ChooseLanguageController
{
    public function __invoke()
    {
        return new Response('Choose Language!');
    }
}

然后此操作将被排除在 i18n 前缀之外。