首页 文章

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

提问于
浏览
1

I have a i18n project running on Symfony 4.1.

我想实现一些路由,如:

  • / => "Choose language"页面路线

  • / fr /或/ en / =>主页路线

  • / fr / foo /,/ en / bar等=>其他路线

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

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

这样,来自'../src/Controller/'的注释中定义的所有路径都是前缀,这导致我的“选择语言”页面和主页之间发生冲突 .

I want to exclude the "Choose language" page from the i18n prefixing, so I'll be able to use "/" for this page, when the homepage could stay on /fr or /en.

任何想法实现这一目标?

1 回答

  • 3

    在没有前缀选项的 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前缀中排除 .

相关问题