生产中的前缀错误 | 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 错误

Symfony 错误:在链配置的命名空间 App\Entity 中找不到类 xxx [重复]

Symfony2 找不到映射文件