relief_applications / doc-manager-bundle
一个用于在数据库上下文中管理文档上传和下载的包
v1.3
2018-12-20 10:41 UTC
Requires
- php: >=7.0
- aws/aws-sdk-php-symfony: >=1.0
- jms/serializer-bundle: >=1.1
- knplabs/knp-gaufrette-bundle: >=0.3
- liip/imagine-bundle: >=1.6
- symfony/framework-bundle: >=2.5.6
- vich/uploader-bundle: >=1.3
Requires (Dev)
- phpunit/phpunit: ^6.2
- symfony/phpunit-bridge: ^3.0
This package is auto-updated.
Last update: 2024-09-20 22:58:34 UTC
README
DocBundle
步骤 1: 下载包
打开命令行界面,进入您的项目目录,并执行以下命令以下载此包的最新稳定版本
$ composer require relief_applications/doc-bundle
此命令需要您已全局安装 Composer,具体请参考 Composer 文档中的 安装章节。
有关包及其依赖项的更多信息,请访问我们的 Packagist 页面: https://packagist.org.cn/packages/relief_applications/doc-bundle。
步骤 2: 启用包
然后,通过将其添加到项目中 app/AppKernel.php
文件中注册的包列表来启用该包。
<?php // app/AppKernel.php // ... class AppKernel extends Kernel { public function registerBundles() { $bundles = array( // ... new RA\DocBundle\RADocBundle(), ); // ... } // ... }
步骤 3: 使用
-
创建一个继承自 Ra\DocBundle\Model\BaseDocument 的类
<?php /** * @ORM\Table(name="document") * @ORM\Entity(repositoryClass="...") **/ class Document extends BaseDocument { //... public function __construct() { parent::__construct(); // your work } //... }
-
上传和创建文档
<?php public function createAction(Request $request){ //build Document $document = new Document(); $file = $request->files->get('file'); try { $this->get('ra_doc.transfert')->createDocument($document, $file); } catch (DocumentException $e) { return new JsonResponse($e->getMessage(), Response::HTTP_BAD_REQUEST); }
-
上传和更新文档
<?php public function updateAction(Request $request, Document $document) { $name = $request->request->get('name'); $file = $request->files->get('file'); //doesn't care if the file is empty or not //if the file is empty, there won't be any upload //changing metaname $document->getDocumentMeta()->setName($name); try { $this->get('ra_doc.transfert')->updateDocument($document, $file); } catch (DocumentException $e) { return new JsonResponse($e->getMessage(), Response::HTTP_BAD_REQUEST); }
-
下载文档
<?php public function downloadAction(Request $request, Document $document) { try { return $this->get('ra_doc.transfert')->download($document); } catch (DocumentException $e) { return new JsonResponse($e->getMessage(), Response::HTTP_BAD_REQUEST); } }
-
删除文档
<?php public function deleteAction(Request $request, Document $document) { try{ $this->get('ra_doc.transfert')->deleteDocument($document); } catch (DocumentException $e) { return new Response($e->getMessage(), Response::HTTP_BAD_REQUEST); } return new Response(); }
-
获取文档在文件系统中的路径
<?php try{ $path = $this->get('ra_doc.transfert')->getFilePath($document); } catch (DocumentException $e) { //... }
步骤 4: 配置
Vich、Gaufrette 和 Liip 的配置由开发者负责。
步骤 * : 自定义
您可以通过添加自定义字段并声明此字段来更改默认文件字段
<?php //... use RA\DocBundle\Model\BaseDocument; use RA\DocBundle\Model\Limits; use Symfony\Component\HttpFoundation\File\File; //... class Document extends BaseDocument { //... /** * @Assert\NotNull( * message = "The file is required" * ) * @Assert\File( * maxSize= Limits::max_document_size, * mimeTypes={"application/pdf", "application/x-pdf", * "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", * "image/jpeg", "image/png", * "application/vnd.ms-powerpoint", "application/vnd.openxmlformats-officedocument.presentationml.presentation", * "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-powerpoint.addin.macroEnabled.12", * "application/vnd.openxmlformats-officedocument.presentationml.template", "application/vnd.openxmlformats-officedocument.presentationml.slideshow", * "text/plain", "image/pjpeg","application/vnd.oasis.opendocument.spreadsheet" * }, * mimeTypesMessage="ra.document.type-of-file-is-invalid" * ) * @Vich\UploadableField(mapping="upload_file", fileNameProperty="name") * * @var File $customFile */ protected $customFile; //... //overrides inherited function public function getFileField() { return 'customFile'; } //overrides inherited function public function getFile() { return $this->getCustomFile(); } //overrides inherited function public function setFile(\Symfony\Component\HttpFoundation\File\UploadedFile $file) { parent::setFile($file); $this->setCustomFile($file); } }
您还可以在 Assert\File 注解中定义自己的自定义要求。