我在“ 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中有更好的方法吗?
答案 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