项目中的routing.yml
策略应该在多个域中部署多个区域设置,某些区域设置是"类似的",并且页面,逻辑和布局绝对是相同?
我有代理旅行。让我们来命名公共网络"目录"。我目前在我的es_ES
域中使用西班牙语(.es
)拥有Symfony 3项目的目录。
我会将其翻译成加泰罗尼亚语(ca_ES
)到我的.cat
域名中。接下来的翻译将使用英语英语(en_GB
)和西班牙语墨西哥语(es_MX
)。在接下来的未来,更多" spanishes"更多"发表"将被添加,等等。
我目前在我的symfony中有5条主要路线(还有更多,但对于这里的问题,这已经足够了):
/ # proposal of value, main message
/viajes # index of the catalog
/quienes-somos # Who we are
/{destination} # for example "/tailandia")
/{destination}/{trip} # for example "/tailandia/circuito-norte-sur")
请注意,/viajes
和quienes-somos
位于/{destination}
之前,以便匹配器正确捕获它们。
我计划在明年增加约20种语言或语言变体。
我目前有一名部署员。该项目包括大约10个.git
回购,一个用于管理面板,一个用于目录,一个用于DDD模型,一个用于静力学等。
如果我只使用一个.git
和一个routing.yml
,我会预测路由的意外问题。
我不认为只是:
/qui-som # For Catalan
/chi-siamo # For Italian
/quienes-somos # HEY!! WHAT HERE? es_ES or es_MX???
/who-we-are # the same => en_US or en_GB?
他们需要"主持人"资格。
此外,当路线与/{destination}
或/{destination}/{trip}
匹配时,我只想探索目的地的一部分:
如果我在example.mx
,我得到/tailandia/circuito-sur-norte
我不需要浏览所有语言和所有行程的完整目的地列表;只有西班牙es_MX
seo友好目的地和旅行。
同样,如果我在example.co.uk
并且我得到/thailand/circuit-south-north
,我只需要探索en_GB
seo-titles以获取要呈现的内容。
我认为有两种策略可行:
在routing.yml
中有某种"规则"与"主持人有关#34;并设置" _locale"手工制作的param,类似于:
whoWeAre_es_ES:
path: /quienes-somos
methods: [ GET ]
host: example.es
defaults:
_controller: CatalogBundle:Legal:whoWeAre
_locale: es_ES
whoWeAre_es_MX:
path: /quienes-somos
methods: [ GET ]
host: example.mx
defaults:
_controller: CatalogBundle:Legal:whoWeAre
_locale: es_MX
注意/ DOUBT:我不知道是否主持了#34;实际上会影响路线匹配器的东西,或仅用于建造路线。
此外,这会在生成路线时产生问题。如果在主页中我放置了whoWeAre
的链接,我应该知道要渲染的那些路线是什么,并在某种意大利面条代码中产生了我的意料。
拥有多个routing.yml文件并调整部署者中的包含:
src/CatalogBundle/Resources/config/routing_es_ES.yml
src/CatalogBundle/Resources/config/routing_es_MX.yml
src/CatalogBundle/Resources/config/routing_en_GB.yml
src/CatalogBundle/Resources/config/routing_en_US.yml
然后在部署者中,在文件上使用sed
app/config/routing.yml
并在我正在部署的域中包含一个或另一个路由文件。
我喜欢这种方法,因为每个域都拥有它自己拥有的"自动包含的"路由定义;它还允许我将整个网站的区域设置设置为config.yml
中的设置,如下所示:
parameters:
locale: en_GB
相反,这会造成丑陋的重复。例如,所有常规匹配路由(如/{destination}/{trip}
)将在所有路由文件中重复。
Okey,我可以将它们的常用因子提取到其他所有文件中。
静态路由仍然只在设置_locale
内容时有所不同,但共享_controller
部分。
我不知道symfony中的路由是否可以添加default
参数,然后将匹配器转发到另一个命名路由,例如:
whoWeAre_es_ES:
path: /quienes-somos
host: example.es
defaults:
_locale: es_ES
someKindOfReroutingThingPointingTo: whoWeAre
whoWeAre_es_MX:
path: /quienes-somos
host: example.mx
defaults:
_locale: es_MX
someKindOfReroutingThingPointingTo: whoWeAre
whoWeAre_en_GB:
path: /who-we-are
host: example.co.uk
defaults:
_locale: es_MX
someKindOfReroutingThingPointingTo: whoWeAre
whoWeAre:
methods: [ GET ]
defaults:
_controller: CatalogBundle:Legal:whoWeAre
Thnkx!