跳到内容

从 EasyAdmin 2 升级到 EasyAdmin 3

编辑此页

在 EasyAdmin 2 中,大多数后端配置是在 YAML 文件中定义的,而自定义行为是用 PHP 创建的。 这对于小型应用程序来说效果很好,但对于中型和大型应用程序来说,维护起来很困难,并且不够灵活。

从 EasyAdmin 3 开始,后端完全使用 PHP 创建。 YAML 不再用于 EasyAdmin 的任何部分。 但是,您将比以前更有效率,因为您可以自动完成 100% 的新 PHP 代码,并且该 bundle 还提供了生成一些所需代码的命令。

从 EasyAdmin 2 自动升级到 EasyAdmin 3

为了简化迁移,EasyAdmin 包含一个命令,用于将 EasyAdmin 2 YAML 配置迁移到 EasyAdmin 3 中所需的 PHP 文件。 在某些复杂的项目中,此命令无法完成所有需要的工作,但它将帮助您完成大部分工作。

步骤 1. 在您现有的 Symfony 应用程序中,运行此命令

1
2
$ cd your-project/
$ php bin/console make:admin:migration

此命令会将 EasyAdmin 2 YAML 配置备份到一个文件中,以便您以后可以从 EasyAdmin 3 访问它。

步骤 2. 更新您的 composer.json 依赖项以升级到 EasyAdmin 3

1
2
-"easycorp/easyadmin-bundle": "^2.0",
+"easycorp/easyadmin-bundle": "^3.0",

现在,运行此命令以实际更新依赖项

1
$ composer update

步骤 3. 根据您的项目配置,您可能需要在升级后修复一些小的路由和配置问题。 Symfony 的错误消息将指导您。

步骤 4. 从您的 EasyAdmin 3 应用程序再次运行此命令

1
$ php bin/console make:admin:migration

选择包含 EasyAdmin 2 YAML 配置的配置,该命令将生成所有需要的 PHP 文件来复制该配置。 在大多数应用程序中,此命令会生成所有需要的代码,但在复杂的应用程序中,您可能需要调整、修复或添加一些额外的更改。

向后不兼容的变更

make:admin:migration 命令尽力生成与之前的 YAML 配置等效的 PHP 文件。 但是,您可能还需要在应用程序中手动进行一些其他更改

  • 事件名称已更改,以支持基于对象的事件,这是从 Symfony 4.3 开始推荐的做法。 例如,EasyAdminEvents::PRE_PERSIST 现在是 BeforeCreatingEntity::class。 阅读事件文章了解详情。
  • 大多数默认模板路径已更改:@EasyAdmin/default/*.html.twig 模板已拆分为三个不同的目录:@EasyAdmin/page/*.html.twig@EasyAdmin/label/*.html.twig@EasyAdmin/field/*.html.twig
  • 一些 HTML 元素及其 CSS 类和 ID 已更改。 如果您为后端创建了一些自定义 CSS/JS 代码,这将只会影响您。

移除的功能

EasyAdmin 3 删除了以前版本的一些不再被认为有用的功能

  • design.brand_color 配置选项已被删除,因为您无法仅通过更改此值来自定义后端设计。 如果您仍然想这样做,请在您的 dashboard 类中使用以下代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class DashboardController extends AbstractDashboardController
    {
        // ...
    
        public function configureAssets(): Assets
        {
            return Assets::new()
                // ...
                ->addHtmlContentToHead('<style>:root { --color-primary: #123456; }</style>');
        }
    }
  • 已删除用于设置默认后端页面的 default: true 选项。 使用 dashboard 索引作为默认页面,或重定向到 dashboard 控制器操作中的所需页面。
  • 全局选项 easy_admin.list.titleeasy_admin.show.title 等已被删除,取而代之的是 Crud 类中的 setPageTitle() 方法。
  • 实体的全局 help 选项已被删除,取而代之的是 Crud 类中的 setHelp() 方法。
  • 全局 easy_admin.list.max_results 选项已被删除,取而代之的是 Crud 类中的 setPaginatorPageSize() 方法。
  • 已删除快速过滤实体列表的 dql_filter 选项。 相反,请在 CRUD 控制器中使用 createIndexQueryBuilder() 方法。
  • 已删除 PRE_INITIALIZEPOST_INITIALIZE 事件。 如果您想在 AdminContext 变量中修改配置,请使用 Symfony 监听器/订阅器并在 EasyAdmin 之后运行它。 您还可以装饰 AdminContextProvider 服务。
  • 已删除 PRE_DELETEPOST_DELETEPRE_EDITPOST_EDITPRE_LISTPOST_LISTPRE_NEWPOST_NEWPRE_SEARCHPOST_SEARCHPRE_SHOWPOST_SHOW 事件。 请改用 BeforeCrudActionEventAfterCrudActionEvent 事件。

这项工作,包括代码示例,均根据 Creative Commons BY-SA 3.0 许可获得许可。
目录
    版本