从 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.title
、easy_admin.show.title
等已被删除,取而代之的是Crud
类中的setPageTitle()
方法。 - 实体的全局
help
选项已被删除,取而代之的是Crud
类中的setHelp()
方法。 - 全局
easy_admin.list.max_results
选项已被删除,取而代之的是Crud
类中的setPaginatorPageSize()
方法。 - 已删除快速过滤实体列表的
dql_filter
选项。 相反,请在 CRUD 控制器中使用createIndexQueryBuilder()
方法。 - 已删除
PRE_INITIALIZE
和POST_INITIALIZE
事件。 如果您想在 AdminContext 变量中修改配置,请使用 Symfony 监听器/订阅器并在 EasyAdmin 之后运行它。 您还可以装饰AdminContextProvider
服务。 - 已删除
PRE_DELETE
、POST_DELETE
、PRE_EDIT
、POST_EDIT
、PRE_LIST
、POST_LIST
、PRE_NEW
、POST_NEW
、PRE_SEARCH
、POST_SEARCH
、PRE_SHOW
、POST_SHOW
事件。 请改用BeforeCrudActionEvent
和AfterCrudActionEvent
事件。