删除symfony路由组件中的默认语言环境前缀

时间:2019-06-12 06:37:36

标签: php symfony routing url-routing symfony-components

使用个人项目中的symfony路由组件(没有完整的symfony框架)。我的方法是:在routes.yaml文件中添加路由,如下所示:

index:
    path:     /test
    methods: GET
    controller: 'App\Catalog\Controller\Home\IndexController::index'

register:
    path:     /test/account/register
    methods: GET
    controller: 'App\Catalog\Controller\Account\RegisterController::index'

我的路由工作正常,但是我需要在uri / routing中为这样的多语言系统添加自动语言环境前缀:

mydomain/test    //for default language ie: en
mydomain/test/fr
mydomain/test/de
mydomain/test/account/register      //for default language ie:en
mydomain/test/fr/account/register
mydomain/test/de/account/register

如何在routes.yaml文件中添加语言环境前缀并删除默认的语言环境前缀语言?!

1 个答案:

答案 0 :(得分:1)

如果您的应用程序是最新的,则可以使用4.1中引入的Internationalized routing这样

# config/routes/annotations.yaml
controllers:
    resource: '../../src/Controller/'
    type: annotation
    prefix:
        en: '' # don't prefix URLs for English, the default locale
        fr: '/fr'
        de: '/de'

否则,您可以引用另一个带有前缀选项的routing.yml文件

# config/routing.yml

french_route:
    resource: "french_routing.yml"
    prefix:   /fr

deutch_route:
    resource: "deutch_routing.yml"
    prefix:   /de

您可以使用文件分隔语言,每种语言都会自动带有自己的前缀