承接 jorisdugue/easyadmin-extra-bundle 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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

CI PHP Symfony EasyAdmin License Packagist Version

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

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-03-30

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固