You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony升级后Sonata Admin路由名称修改及缺失报错解决

解决Symfony升级后Sonata后台路由不存在问题

问题分析

升级Symfony到5.4版本后,Sonata Media Bundle的路由命名前缀从sonata变为app,导致模板中引用的旧路由admin_sonata_media_media_create无法匹配实际存在的admin_app_media_media_create。

解决步骤

1. 检查Sonata Media Bundle配置

打开config/packages/sonata_media.yaml(升级前可能在app/config/config.yml),确认admin服务的命名配置:

sonata_media:
    admin:
        media:
            service: sonata.media.admin.media
            # 检查是否有prefix或service命名相关配置,确认当前路由前缀为app

2. 全局搜索并替换旧路由名

在项目根目录执行全局搜索(根据系统选择命令):

  • Linux/macOS:grep -r "admin_sonata_media_media_create" ./
  • Windows(PowerShell):Get-ChildItem -Recurse | Select-String "admin_sonata_media_media_create"

找到所有包含该路由的文件,重点替换以下场景:

  • Twig模板:将path('admin_sonata_media_media_create')或url('admin_sonata_media_media_create')改为path('admin_app_media_media_create')
  • PHP Admin类:检查configureActionButtons等自定义按钮方法中的硬编码路由引用,替换为新路由名

3. 检查Sonata Admin路由配置

查看config/routes/sonata_admin.yaml,确认路由注册是否正确关联到你的MediaAdmin服务:

admin:
    resource: '@SonataAdminBundle/Resources/config/routing/sonata_admin.xml'
    prefix: /admin

_sonata_admin:
    resource: .
    type: sonata_admin
    prefix: /admin

确保App\Admin\MediaAdmin类已正确注册,路由命名前缀为app。

4. 清除缓存

执行缓存清除命令,确保路由缓存更新:

# 开发环境
php bin/console cache:clear

# 生产环境
php bin/console cache:clear --env=prod

5. 额外排查点

  • 检查自定义Sonata模板:查看templates/bundles/SonataMediaBundle或src/Resources/views/Admin下的模板文件,是否有遗留的旧路由引用
  • 确认Sonata包版本:查看composer.json中sonata-project/media-bundle的版本,升级后可能存在路由命名规则变更,需对应调整

内容的提问来源于stack exchange,提问作者Aleksey Lapaev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 03:32:19