jorisdugue/easyadmin-extra-bundle
最新稳定版本:1.0.3
Composer 安装命令:
composer require jorisdugue/easyadmin-extra-bundle
包简介
Advanced data tools for EasyAdmin 5, including exports, security helpers, and future bulk operations.
关键字:
README 文档
README
Export and CSV import workflows for EasyAdmin 5 applications on Symfony 7.4/8 and PHP 8.2+.
EasyAdmin Extra Bundle adds opt-in data exchange actions to EasyAdmin CRUD controllers. It is designed for back offices that need stable file contracts, previewable CSV imports, selected-row exports, and explicit field definitions that are independent from the fields displayed in the EasyAdmin UI.
Why Use This?
EasyAdmin fields are UI fields. They describe forms, list pages, formatting, and admin interaction.
Import and export files often need a different contract: hidden columns, fixed labels, stable ordering, normalized values, masked data, or explicit CSV column positions. This bundle keeps those concerns separate: you define configured import/export fields for the file contract, while EasyAdmin fields remain focused on the admin interface.
Use it when you need to:
- export CSV, XLSX, JSON, or XML from EasyAdmin CRUD index pages
- preview exports before download
- export selected rows through EasyAdmin batch actions
- preview CSV imports before persistence
- confirm CSV imports through a revalidated temporary file flow
- map imports by headers, field order, or explicit CSV column position
- transform import/export values without changing the EasyAdmin UI
Features
#[AdminExport]and#[AdminImport]attributes- dedicated import/export field providers
- CSV/XLSX/JSON/XML export
- CSV import preview and confirmation
- batch export
- export sets
- export field masking, role visibility, and format visibility
- English and French translations
Installation
composer require jorisdugue/easyadmin-extra-bundle
Symfony Flex should auto-register the bundle. If it does not, register the bundle in your Symfony application as usual.
Requirements
- PHP
>=8.2 - Symfony Framework Bundle
^7.4 || ^8.0 - EasyAdmin Bundle
^5.0 - Confirmed CSV imports require a Doctrine ORM entity manager for the imported entity.
Route Loader
Add the route loader:
# config/routes/easyadmin_extra.yaml easyadmin_extra: resource: . type: jorisdugue_easyadmin_extra.routes
Without this route loader, generated import and export routes are not available.
Minimal Export Example
use App\Entity\Product; use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController; use JorisDugue\EasyAdminExtraBundle\Attribute\AdminExport; use JorisDugue\EasyAdminExtraBundle\Contract\ExportFieldsProviderInterface; use JorisDugue\EasyAdminExtraBundle\Field\MoneyExportField; use JorisDugue\EasyAdminExtraBundle\Field\TextExportField; #[AdminExport(formats: ['csv', 'xlsx'], previewEnabled: true)] final class ProductCrudController extends AbstractCrudController implements ExportFieldsProviderInterface { public static function getEntityFqcn(): string { return Product::class; } public static function getExportFields(?string $exportSet = null): array { return [ TextExportField::new('sku', 'SKU'), TextExportField::new('name', 'Name'), MoneyExportField::new('price', 'Price')->storedAsCents(), ]; } }
Minimal Import Example
use App\Entity\Product; use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController; use JorisDugue\EasyAdminExtraBundle\Attribute\AdminImport; use JorisDugue\EasyAdminExtraBundle\Contract\ImportFieldsProviderInterface; use JorisDugue\EasyAdminExtraBundle\Field\ChoiceImportField; use JorisDugue\EasyAdminExtraBundle\Field\DateImportField; use JorisDugue\EasyAdminExtraBundle\Field\TextImportField; #[AdminImport] final class ProductCrudController extends AbstractCrudController implements ImportFieldsProviderInterface { public static function getEntityFqcn(): string { return Product::class; } public static function getImportFields(?string $importSet = null): array { return [ TextImportField::new('sku', 'SKU')->required(), TextImportField::new('name', 'Name')->required(), ChoiceImportField::new('status', 'Status') ->setChoices(['draft' => 'Draft', 'published' => 'Published']) ->required(), DateImportField::new('createdAt', 'Created at')->setFormat('Y-m-d'), ]; } }
Documentation
The documentation site uses Zensical and is configured by zensical.toml:
zensical serve zensical build
License
MIT
统计信息
- 总下载量: 61
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-03-30