具有多个参数的Transm Symfony路由

时间:2013-11-15 16:15:02

标签: symfony symfony-2.3 symfony-routing

正如标题所示,我将Symfony与JMSTranslationBundleJMSI18nBundle结合使用,以便为翻译的路线提供服务。

这是我当前配置的路线: /{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,除了动态字段之外什么都没有?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

解决:

正如周五下午问题的常态一样,我发现我的翻译路线规则中有一个$,如下:

/{location}/{$profession}/{specialty}

删除它并刷新缓存会导致路由正常工作。

tl; dr - PEBKAC