生产中的前缀错误 | Symfony 5 |找不到路线
Posted
技术标签:
【中文标题】生产中的前缀错误 | Symfony 5 |找不到路线【英文标题】:Prefix Error in Production | Symfony 5 | No route found 【发布时间】:2021-06-04 13:43:39 【问题描述】:我在生产中遇到了以下奇怪的行为。 twig 命令 path('recherche')
会生成严重错误日志,但不会停止渲染过程:
无法为命名路由“recherche”生成 URL
它似乎来自语言环境。 2 前缀在 annotations.yml 中定义:
resource: ../../src/Controller/
type: annotation
prefix:
html: ''
amp: '/amp'
当我将 _locale 添加为参数 _locale: 'html'
时,没有错误
任何帮助都会很棒。
【问题讨论】:
【参考方案1】:您可能误用了路由规则。
前缀(和路径)是单值参数。
只有在Localized Routes 的情况下才接受多个值(这就是为什么在传递_locale
参数时不会抛出任何错误)。
在不扩展内置路由器的情况下,您唯一可以做的就是指定两个不同的路由前缀,例如:
web:
resource: ../../src/Controller/
type: annotation
amp:
resource: ../../src/Controller/
type: annotation
name_prefix: 'amp_'
prefix: '/amp'
然后调用一个自定义的 twig 函数来评估上下文(amp 与否)并使用正确的目标路由名称(带或不带'amp_'前缀)调用路由器
【讨论】:
谢谢你!我正在为 api_platform 和为所有 api 端点(多个前缀)添加第二条内部路由的任务而苦苦挣扎。所以我在 yaml-array 样式中添加了第二个前缀,它基本上可以工作,但是我得到了奇怪的路由名称,由于路由名称,在生成 openapi.yml 文件时无法识别。它们以.0
和.1
结尾。现在我创建了两个路由定义,就像你的帖子一样,效果很好。这为我节省了 8 个多小时的覆盖/装饰 api_platform 的 PathResolver 的时间。非常感谢,亚历山德罗!以上是关于生产中的前缀错误 | Symfony 5 |找不到路线的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Symfony 5.1 创建数据库:找不到驱动程序 [关闭]
symfony5 - heroku - 找不到 url 404
在 Heroku 上部署 Symfony5/php7 应用程序时找不到模板“base.html.twig”错误消息
Symfony4“@ParamConverter 注释找不到对象”404 错误