正如标题所示,我将Symfony与JMSTranslationBundle和JMSI18nBundle结合使用,以便为翻译的路线提供服务。
这是我当前配置的路线:
/{location}/{profession}/{specialty}
所以路线
/berlin/arzt/allgemein
成功推送到正确的控制器和操作。
JMSI18nBundle使用/ en /自动为我的英文路线添加前缀。这适用于具有非动态组件的所有其他路由(例如/profile/{slug}/
)。但是,当使用上述示例的英文版时,这不起作用。即。
/en/berlin/doctor/general
我猜测路由器没有正确读取这个正常路线的英文版本,而是尝试分配location = en,profession = berlin等,这显然是不正确的。
我已经尝试为翻译定义可选参数,更复杂的正则表达式和尾部斜杠(所有参数之间都有缓存刷新)。这些都不起作用。什么工作,是插入一个无意义的非动态组件,即/en/s/berlin/doctor/general
等
作为业务需求的一部分,我们不希望这个额外的无意义的非动态URL组件。
所以,我的问题是:我如何在Symfony中使用(带前缀的)可翻译的URL,除了动态字段之外什么都没有?
非常感谢您的帮助!
答案 0 :(得分:0)
解决:
正如周五下午问题的常态一样,我发现我的翻译路线规则中有一个$,如下:
/{location}/{$profession}/{specialty}
删除它并刷新缓存会导致路由正常工作。
tl; dr - PEBKAC