我有一个在 Symfony 4.1 上运行的 i18n 项目。
我想实现一些路由,比如:
- /=> 一个“选择语言”页面路由
- /fr/or/en/=> 主页路由
- /fr/foo/,/en/bar, etc => 其他路线
关注此article ,我正在使用注释来处理路由,并为我的注释路由设置了一个全局前缀:
site:
resource: '../src/Controller/'
type: annotation
prefix:
en: '/en'
fr: '/fr'
这样,所有在'../src/Controller/'的注解中定义的路由都带有前缀,这导致我的“选择语言”页面和主页发生冲突。
我想从 i18n 前缀中排除“选择语言”页面,这样当主页可以保留在/fr 或/en 时,我就可以对此页面使用“/”。强>
有什么想法可以实现吗?
最佳答案
在 annotations.yaml
顶部定义此路由,不带前缀选项:
_choose_language:
path: /
controller: App\Controller\ChooseLanguageController
site:
resource: '../src/Controller/'
type: annotation
prefix:
en: '/en'
fr: '/fr'
并且不要为这个特殊的 Controller 使用路由注释:
class ChooseLanguageController
{
public function __invoke()
{
return new Response('Choose Language!');
}
}
然后这个 Action 被排除在 i18n 前缀之外。
关于php - Symfony 4.1 i18n 路由前缀 : exclude route,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50589455/