routes - Symfony 4 如何在所有 Controller 的 URL 中运行 _locale 前缀?

标签 routes locale symfony4

我正在尝试在我的网站上设置“国际化”。为了解决这个问题,我需要将“locales”设置为所有 Controller URL的前缀(例如:mywebsite.com/en/page),然后我在Symfony4文档中找到了这个帮助: https://symfony.com/doc/current/routing/external_resources.html

我已将这些文件修改如下

config/routes.yaml

controllers:
    resource: '../src/Controller/'
    type: annotation
    prefix: /{_locale}
    requirements:
        _locale: '%app.locales%'
    defaults:
        _locale: '%locale%'

config/services.yaml

parameters:
    app.locales: en|es|fr|ru|mg
    locale: 'en'

config/packages/translation.yaml

framework:
    default_locale: '%locale%'
    translator:
        paths:
            - '%kernel.project_dir%/translations'
        fallbacks:
            - '%locale%'

如果我按如下方式编写 URL:mywebsite.com/en/page,则一切正常,但如果我省略在 URL 中写入 _locale,例如:mywebsite.com/page,它返回 404 错误。 我希望它能够到达 mywebsite.com/en/page,因为“en”在我的文件中被指定为 default_locale。

我错过了什么?谢谢。

最佳答案

看来这个技巧确实有效:

#config/services.yaml

parameters:
    app.locales: en|es|fr|ru|mg|
    locale: 'en'

只需在 app.locales 行末尾添加 | ,现在我可以在没有 _locale 前缀的情况下访问 Controller

关于routes - Symfony 4 如何在所有 Controller 的 URL 中运行 _locale 前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48053619/

相关文章:

javascript - 未能 "dynamically"导入 date-fns/locale 库 - TypeScript 给出尝试导入错误

php - 如何设置环境而不是 .env 文件?

php - 如何将全局变量注入(inject)所有模板?

scope - Angularjs,在路由之间传递范围

routes - vue.js 上的动态路由器链接不起作用

javascript - Angular UI 路由器重定向到默认页面

Python:使用 %x(语言环境)格式化的日期与预期不符

Java NumberFormat : Missing Currency Symbols for Portugal, 卢森堡等

php - 如何在 symfony 模式重定向上更改 http 代码

Asp.Net MVC - 重载操作方法