php - Symfony 4.1 i18n 路由前缀 : exclude route

标签 php symfony symfony4

我有一个在 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/

相关文章:

php - FFmpeg 可以连接来自不同域的文件吗?

php - Symfony 2/Doctrine 2 : Two Entities for the same table, 用一个代替另一个

mongodb - 从另一个文档的 preUpdate Hook 保存一个 Doctrine 文档的更新?

PHP7 + Symfony 2.8,写入 session 数据失败

symfony - token 存储不包含身份验证 token 和denyAccessUnlessGranted()

mysql - Symfony4/Doctrine - 无法通过 SSL 连接(DBAL 配置)

php - 如何插入选定的单选按钮?

php - 如何为每个文本输入编写 $_POST 方法

php - Facebook 在未经publish_stream 许可的情况下发布到我的页面墙

jwt - Symfony 4:无法找到路径 "/api/login_check"的 Controller 。路由配置错误