playtini/easy-admin-helper-bundle
Composer 安装命令:
composer require playtini/easy-admin-helper-bundle
包简介
EasyAdmin Helper Bundle
README 文档
README
Extends EasyAdmin with reusable traits, fields, and controllers for building admin panels. Requires PHP 8.5+ and Symfony 7.4+/8.1+.
Install
composer require playtini/easy-admin-helper-bundle
Create App\EasyAdmin\EasyAdminMenu implementing EasyAdminMenuInterface.
Create DashboardController extending CustomDashboardController.
Add to config/services.yaml:
Playtini\EasyAdminHelperBundle\Dashboard\EasyAdminMenuInterface: class: 'App\EasyAdmin\EasyAdminMenu' Playtini\EasyAdminHelperBundle\Dashboard\EasyAdminContext: bind: $dashboardController: '@App\Controller\Admin\DashboardController' Playtini\EasyAdminHelperBundle\Event\DashboardExceptionSubscriber: tags: [ { name: kernel.event_subscriber } ]
Load routes. Add to config/routes/easyadmin.yaml:
easy_admin_helper: resource: '@EasyAdminHelperBundle/config/routes.yaml'
EasyAdmin 5 requires pretty URLs, so the EasyAdmin route loader must be enabled for the custom CRUD actions (archive, duplicate) to be registered. Add to the same config/routes/easyadmin.yaml:
easyadmin: resource: . type: easyadmin.routes
Install bundle assets (symlinks JS/CSS to public/bundles/easyadminhelper/):
php bin/console assets:install
Features
Controller Traits
| Trait | Purpose |
|---|---|
CrudControllerTrait |
Base CRUD config (date formats, pagination, actions, detail→edit redirect) |
ArchiveCrudControllerTrait |
Soft-delete via archiving (auto-filters archived, archive/unarchive actions) |
DuplicateCrudControllerTrait |
Entity duplication via DuplicateInterface |
ReadOnlyCrudControllerTrait |
Disables all edit/delete actions, makes fields disabled |
InlineEditCrudControllerTrait |
Inline editing support |
SaveCrudControllerTrait |
Custom save logic via repository |
UserCrudControllerTrait |
Current user helpers |
QuickDateFilterCrudTrait |
Dropdown with preset date periods (1h, today, 24h, 7d, 30d) |
DateRangePickerCrudTrait |
Calendar-based date range picker with from/to params |
Entity Traits
| Trait | Fields |
|---|---|
IdEntityTrait |
Auto-increment id |
NameEntityTrait / NameUniqueEntityTrait |
name (varchar 255) |
LongNameEntityTrait |
name (varchar 1000) |
CreatableEntityTrait |
createdAt (auto-set on persist) |
UpdatableEntityTrait |
updatedAt (auto-set on persist/update) |
ArchivableEntityTrait |
archivedAt (soft-delete timestamp) |
IsEnabledTrait |
isEnabled (boolean) |
UidEntityTrait |
uid (unique string) |
CommentEntityTrait / ShortCommentEntityTrait |
comment (text / varchar 1024) |
DataEntityTrait |
data (JSON column with YAML display helper) |
VirtualFieldsEntityTrait |
Stub methods for computed fields |
CrudField Helper
Static factory for pre-configured EasyAdmin fields:
yield CrudField::id(); yield CrudField::panel('Details', 6); yield CrudField::name(); yield CrudField::email(); yield CrudField::domain(); yield CrudField::ip(); yield CrudField::country(); yield CrudField::url('websiteUrl'); yield CrudField::status(); yield CrudField::bool('isVerified', 'Verified'); yield CrudField::createdAt(); yield CrudField::updatedAt(); yield CrudField::yaml('config', isIndex: true); yield CrudField::virtual('Score', fn($v, $entity) => $entity->getScore());
AdminFormatter
AdminFormatter::badge('active', '#198754') // colored badge AdminFormatter::badgeMap('error', $colorMap) // badge with color lookup AdminFormatter::formatExpireDate($date) // color-coded by days remaining AdminFormatter::formatHttpStatus(200) // Bootstrap status badge AdminFormatter::formatBoolNullEmoji(true) // 🟢 / 🔴 AdminFormatter::muteZero(0) // grayed-out zero AdminFormatter::percents(25, 100) // "25%"
Quick Date Filter
Dropdown with preset date periods. Query param: ?period=24h
class ClickCrudController extends AbstractCrudController { use CrudControllerTrait; use QuickDateFilterCrudTrait; public function configureCrud(Crud $crud): Crud { return $this->_configureCrud($crud) ->overrideTemplate('crud/index', '@EasyAdminHelper/crud/quick_date_filter_index.html.twig'); } public function createIndexQueryBuilder(...): QueryBuilder { $qb = parent::createIndexQueryBuilder(...); return $this->applyQuickDateFilter($qb); } }
Override getQuickDateField(), getQuickDateDefault(), getQuickDateOptions() to customize.
Date Range Picker
Calendar-based date range picker. Query params: ?from=2025-01-01&to=2025-01-31
class EventCrudController extends AbstractCrudController { use CrudControllerTrait; use DateRangePickerCrudTrait; public function configureCrud(Crud $crud): Crud { return $this->_configureCrud($crud) ->overrideTemplate('crud/index', '@EasyAdminHelper/crud/date_range_picker_index.html.twig'); } }
The trait handles createIndexQueryBuilder() and configureResponseParameters() automatically. Override getDateRangeField() and getDateRangeDefaultDays() to customize.
Doc Controllers
Built-in documentation viewer for markdown files in {project}/doc/. Supports YAML front matter. Routes:
/admin/doc— doc index/admin/doc/{name}— single doc page/admin/doc/db— database diagrams
Bundled Assets
The bundle ships common vendor JS/CSS in public/. After assets:install they're available at /bundles/easyadminhelper/:
js/jquery.js— jQueryjs/chart.js— Chart.jsjs/moment.min.js— Moment.jsjs/vanilla-datetimerange-picker.js— Date range pickercss/vanilla-datetimerange-picker.css— Date range picker styles
The bundle layout (templates/layout.html.twig) includes common CSS utilities (.positive, .negative, .uid, .short-1–.short-6, .btn-xs, etc.) and auto-initializes Bootstrap tooltips.
playtini/easy-admin-helper-bundle 适用场景与选型建议
playtini/easy-admin-helper-bundle 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 894 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 07 月 01 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 playtini/easy-admin-helper-bundle 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 playtini/easy-admin-helper-bundle 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 894
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 17
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: proprietary
- 更新时间: 2025-07-01