定制 2lenet/entity-file-bundle 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

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

2lenet/entity-file-bundle

最新稳定版本:1.2.0

Composer 安装命令:

composer require 2lenet/entity-file-bundle

包简介

This package allows you to attach files to entities

README 文档

README

With this bundle, you can attach files to entities.

Installation

composer require 2lenet/entity-file-bundle 

Configuration

This bundle works with configurations. A configuration = 1 entity 1 file system.

For example, you may have a configuration for the logo of multiple sellers, and a configuration for the pictures of the products they sell.

Basic configuration

In lle_entity_file.yaml

lle_entity_file: configurations: seller_logos: class: "App\\Entity\\Seller" storage_adapter: "lle_entity_file.storage.default" 

That's it! With the default storage adapter configuration, those files will be saved under data/seller_logos

Change the storage adapter

This bundle uses the FlySystem Symfony Bundle. You can create your own storage adapters, (Local disk, FTP, Drive...).

For that, you need to configure a new adapter. Then, change the storage_adapter of your configuration.

Usage

First of all, you need to get the manager for your configuration. For that, use the Lle\EntityFileBundle\Service\EntityFileLoader

$manager = $entityFileLoader->get("seller_logos");

Create a file

$manager = $entityFileLoader->get("seller_logos"); $entityFile = $manager->save($seller, $data, $path); $this->em->persist($entityFile); $this->em->flush();

$data may be a string, a Symfony File object (including UploadedFile) or a resource.

⚠️ Never forget to persist and flush the EntityFile.

  • I want my EntityFile to contain additional properties!

You can use your own Entity class, it needs to be a Doctrine entity that implements Lle\EntityFileBundle\Entity\EntityFileInterface. For your convenience, the trait LleEntityFileBundle\Entity\Trait\EntityFileTrait exists.

You will also have to update your configuration:

unicorn: # ... entity_file_class: "App\\Entity\\UnicornEntityFile"
  • I want to edit my new properties!
$manager = $entityFileLoader->get("unicorn"); $entityFile = $manager->save($seller, $data, "unicorn.png"); $entityFile->setDescription("Picture of a very sexy unicorn"); $this->em->persist($entityFile); $this->em->flush();
  • I want to have a dynamic path in my file structure!
$manager = $entityFileLoader->get("seller_logos"); $manager->save($order, $data, "you/can/do/this"); // example: $dir = $order->getDate()->format("Y-m"); $name = $order->getId() . ".xml"; $manager->save($order, $data, $dir . "/" . $name)
  • For some reason, I want to save my files somewhere else than data

Create your own storage adapter in flysystem.yaml, which is basically a copy of the default one with different directory option.

flysystem: storages: unicorn.storage: adapter: "local" options: directory: "%kernel.project_dir%/unicorns" permissions: file: public: 511 private: 511 dir: public: 511 private: 511

Retrieve files

$manager = $entityFileLoader->get("seller_logos"); $manager->get($seller); $manager->getOne($seller);

Retrieve files from URL

If you didn't use Symfony Flex, you need to add the routes in routes.yaml:

lle_entity_file: resource: "@LleEntityFileBundle/Resources/config/routes.yaml"

Two routes are available:

  • lle_entityfile_entityfile_read (requires configName and id)
    Example: /lle-entity-file/seller_logos/1
  • lle_entityfile_entityfile_readbypath (requires configName and path)
    Example: /lle-entity-file/seller_logos?path=2le.png

Protect your urls

By default, only logged in users can access those urls. You can change the role key in the configuration:

operation_reports: # ... role: "ROLE_OPERATOR"
  • I want the files to be public !

You can use "PUBLIC_ACCESS" in the role key.

  • I want to do something more complex !

Create a custom voter.

Change content disposition (Show in browser or automatically download)

By default, files are served inline. You can change the disposition key under your configuration:

zip_reports: # ... disposition: "attachment"

Access file contents

$manager = $entityFileLoader->get("seller_logos"); $manager->read($file); $manager->readStream($file);

Delete a file

$manager = $entityFileLoader->get("seller_logos"); // deletes the entity and the actual file $manager->delete($file);

Rename or move a file

$manager = $entityFileLoader->get("seller_logos"); $manager->move($file, "actually_not_an_unicorn.png"); $this->em->flush();

⚠️ Never forget to flush the EntityFile.

Exception handling

https://flysystem.thephpleague.com/docs/usage/exception-handling/

Crudit

This bundle is compatible with 2LE's Crudit bundle.

You can use the EntityFileBrick, for example in tabs:

 public function getTabs(): array { return [ "tab.files" => EntityFileBrickConfig::new("seller_logos"), ]; }

It features a dropzone where you can see, add, remove and download files.

统计信息

  • 总下载量: 14.74k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 3
  • 点击次数: 2
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 3
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固