Pimcore配置多参数静态路由提示不存在参数"book/"如何解决?
Pimcore静态路由多参数报错解决方案
问题原因
- 反向路由配置的占位符格式错误:Pimcore静态路由的反向路由参数需要使用
{}包裹,你当前配置使用的%是Symfony服务容器的参数定界符,系统会将%book/%解析为名为book/的容器参数,对应报错就是请求了不存在的参数。 - 正则匹配规则过于贪婪:你当前用的
(.*)会匹配包含斜杠的所有字符,运行时第一个分组可能会吞掉第二段路径的内容,导致参数解析异常。
修复方案
直接修改静态路由配置的pattern和reverse字段即可,修复后的完整配置如下:
pimcore: staticroutes: definitions: f4a7a318-1d29-4f58-8a3c-d204d33a207a: name: story # 正则改为匹配非斜杠字符的分组,避免贪婪匹配 pattern: '/\/stories\/([^\/]+)\/([^\/]+)/' # 占位符改为{}格式,符合Pimcore路由规则 reverse: /stories/{book}/{title} controller: 'App\Controller\DefaultController::storiesAction' variables: 'book,title' defaults: null siteId: { } methods: null priority: 0 creationDate: 1635722217 modificationDate: 1635722280
内容的提问来源于stack exchange,提问作者EllisTheEllice
相关产品推荐
相关产品推荐

