所有API路线的语言和国家/地区

时间:2018-06-27 06:31:31

标签: php symfony routes

我在“ config / routes / modul.yaml”(Symfony 4)下为一些路由辩护。我需要每条休息路线的县和语言。

# Modul route definition
sym_modul1:
    path: /{country}/{language}/modul/test1
    controller: App\Controller\ModulController::test1
    requirements:
        language: en|fr|de|es|cs|it
        country: GB|FR|DE|ES|CS|IT

sym_modul2:
    path: /{country}/{language}/modul/test2
    controller: App\Controller\ModulController::test2
    requirements:
        language: en|fr|de|es|cs|it
        country: GB|FR|DE|ES|CS|IT

sym_modul2:
    path: /{country}/{language}/modul/test3
    controller: App\Controller\ModulController::test3
    requirements:
        language: en|fr|de|es|cs|it
        country: GB|FR|DE|ES|CS|IT

到目前为止,一切都很好。但是我不喜欢在每个文件和每条路线中添加新的国家或语言的想法(后来有很多溃败)。

我已经在symfony演示中看到,可以为路线定义{_locale} wildcart gobal。在“ config / routes.yaml”中看起来像这样

homepage:
    path: /{_locale}
    controller: Symfony\Bundle\FrameworkBundle\Controller\TemplateController::templateAction
    requirements:
        _locale: '%app_locales%'
    defaults:
        template: default/homepage.html.twig
        _locale: '%locale%'

但是我认为这仅适用于{_locale},因为_locale是在内部用户对象中设置的。 Symfony中有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

我想你可以做到:

your_app_routing:
  resource: 'modules.yml'
  prefix: /{country}/{language}
  requirements:
    language: en|fr|de|es|cs|it
    country: GB|FR|DE|ES|CS|IT

然后在modules.yml中输入

# Modul route definition
sym_modul1:
  path: /modul/test1
  controller: App\Controller\ModulController::test1

sym_modul2:
  path: /modul/test2
  controller: App\Controller\ModulController::test2

sym_modul2:
  path: /modul/test3
  controller: App\Controller\ModulController::test3