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

时间:2018-05-29 16:59:06

标签: php symfony symfony4

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

我想实现一些路由,如:

  • / => a"选择语言"页面路由
  • / fr /或/ en / =>主页路线
  • / fr / foo /,/ en / bar,etc =>其他路线

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

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

这样,来自' ../ src / Controller /'的注释中定义的所有路线是前缀,这导致我和#34;选择语言"之间的冲突。页面和主页。

我想排除"选择语言"来自i18n前缀的页面,所以我能够使用" /"对于此页面,当主页可以保持/ fr或/ en。

实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:2)

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