EasyAdmin 5.0:为您的管理后台打造全新基础

发布: (2026年2月26日 GMT+8 15:19)
6 分钟阅读
原文: Dev.to

Source: Dev.to

EasyAdmin 5.0.0 刚刚作为 EasyAdmin 的全新 稳定版本 发布。

EasyAdmin 遵循与 Symfony 类似 的开发哲学。这意味着 EasyAdmin 5.x 包含 完全相同的功能 与 4.x。不同之处在于 5.x 移除了在 4.x 周期中被弃用的所有内容,提供了更简洁、更具前瞻性的基础。

EasyAdmin 5.0 提高了 Symfony 和 PHP 的最低要求,同时仍保持广泛的兼容性。它支持 Symfony 6.4、所有 7.x8.x 版本,兼容 Doctrine ORM 2.x 及以上,并且要求 PHP 8.2 或更高版本。


5.0 中的更改

在 4.x 期间引入的所有功能现在都是 5.0 唯一受支持的方式。以下是最重要更改的概要。

漂亮的 URL(Pretty URLs)

  • 在 4.x 中,你仍然可以使用该 Bundle 自第一天起就使用的传统 URL 格式,例如:
https://example.com/admin?crudAction=edit&crudControllerFqcn=App%5CController%5CAdmin%5cPostCrudController&entityId=3874
  • 在 5.0 中仅支持 漂亮的 URL,例如:
https://example.com/admin/post/3874/edit
  • version 4.14 中引入。
  • 不需要任何配置——得益于 Symfony Flex 配方加载的自定义 Symfony 路由加载器,默认已启用。

漂亮的 URL 已在生产环境中测试超过一年。在此期间我们修复了与菜单、自定义操作等相关的边缘情况。它们已稳定,可用于所有应用。

通过属性定义仪表盘

不再依赖 Symfony 的 #[Route] 属性,你现在必须在仪表盘类上使用 #[AdminDashboard] 属性(在 version 4.24 中添加):

// BEFORE (4.x)
use Symfony\Component\Routing\Attribute\Route;

class DashboardController extends AbstractDashboardController
{
    #[Route('/admin', name: 'admin')]
    public function index(): Response
    {
        // …
    }
}

// AFTER (5.x)
use EasyCorp\Bundle\EasyAdminBundle\Attribute\AdminDashboard;

#[AdminDashboard(routePath: '/admin', routeName: 'admin')]
class DashboardController extends AbstractDashboardController
{
    public function index(): Response
    {
        // …
    }
}

新属性支持 Symfony 提供的所有路由选项,并添加了自己的功能(例如自定义管理员路由的格式以及限制每个仪表盘可用的 CRUD 控制器)。

在后台嵌入 Symfony 控制器

通过在 version 4.25 中新增的 #[AdminRoute] 属性,你可以将任意 Symfony 控制器动作集成到后台。该属性会自动生成在一个或多个仪表盘中渲染你的动作所需的路由,复用与内置 EasyAdmin 动作相同的布局、菜单和视觉设计。

动作改进

在 4.x 周期中我们发布了多项动作改进:

  • 将动作分组到下拉菜单和分割按钮中 – v4.26
  • 在任何动作执行前显示自定义确认信息 – v4.28
  • 配置在 CRUD 索引页点击任意行时触发的默认动作

自动完成自定义

version 4.28 中,我们加入了对自动完成条目渲染方式的完整控制:

// 使用回调进行简单自定义
yield AssociationField::new('category', 'post.category')
    ->setSortProperty('name')
    ->autocomplete(
        callback: static fn (Category $c): string => sprintf('%s %s', $c->getIcon(), $c->getName())
    );

// 使用 Twig 模板片段进行包含 HTML 元素的复杂自定义
yield AssociationField::new('author', 'post.author')
    ->setSortProperty('fullName')
    ->autocomplete(
        template: 'admin/post/_author_autocomplete.html.twig',
        renderAsHtml: true
    );

自定义图标集

EasyAdmin 默认仍使用 FontAwesome 图标,但自 version 4.16 起,你可以使用任何图标集,例如 Tabler 或 Material Icons。

新的 Twig 组件

在 4.x 周期中我们为常用 UI 元素引入了 Twig 组件。在 EasyAdmin 5.x 中,长期目标是基于可复用的 Twig 组件构建整个 UI,从而更容易组合出完整的界面。

自定义管理页面。

升级到 5.x

我们强烈建议 尽快升级。EasyAdmin 4.x 将不再接收新功能,未来的改进将仅面向 5.x。

  1. 移除代码库中的所有已废弃功能

  2. composer.json 中更新 Composer 约束

composer require easycorp/easyadmin-bundle:^5.0

由于 5.0 在功能上与最新的 4.x 发行版相同(唯一的区别是移除了已废弃的代码),在清除已废弃功能后不应再需要其他更改。

初次尝试 EasyAdmin

如果您是 EasyAdmin 新手,请从官方文档和快速入门指南开始。该 bundle 开箱即用,兼容 Symfony Flex,且 pretty‑URL 加载器会自动启用,让您可以立即专注于构建管理界面。

开始使用 EasyAdmin

要开始使用 EasyAdmin,请运行以下命令:

composer require easycorp/easyadmin-bundle

php bin/console make:admin:dashboard
php bin/console make:admin:crud

这将创建一个带有仪表盘和首个 CRUD 控制器的可用管理后台。随后,浏览 EasyAdmin 文档 以自定义字段、操作、过滤器等。

您还可以查看 EasyAdmin Demo 项目

✨ 如果您喜欢这些功能并想看到更多类似内容,请考虑 赞助 EasyAdmin 项目 🙌💡

0 浏览
Back to Blog

相关文章

阅读更多 »

国家代码与地区差异

在 Symfony Intl 中支持科索沃:Symfony 的 Intl 组件不包括科索沃,因为其 ISO 3166‑1 代码 XK 是用户分配的代码,而非官方的…