Symfony 4.1 i18n 路由前缀:排除路由
Symfony 4.1 i18n route prefix: exclude route
我在 Symfony 4.1 上有一个 i18n 项目 运行。
我想实现一些路由,例如:
- / => 一个"Choose language"页面路由
- /fr/ or /en/ => 主页路由
- /fr/foo/, /en/bar, etc => 其他路线
在此 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 前缀之外。
我在 Symfony 4.1 上有一个 i18n 项目 运行。
我想实现一些路由,例如:
- / => 一个"Choose language"页面路由
- /fr/ or /en/ => 主页路由
- /fr/foo/, /en/bar, etc => 其他路线
在此 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 前缀之外。