meloflavio/multiple-file-upload-bundle

用于向 Sonata Admin 添加 AngularJS 文件上传字段的包

安装: 76

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

类型:symfony-bundle

v1.3.1 2019-01-10 12:30 UTC

This package is auto-updated.

Last update: 2024-09-11 01:33:22 UTC


README

此代码是从已归档的 e3n-internetagentur/MultipleFileUploadBundle 分支出来的,未发布最新更改

多文件上传

AppKernel

$bundles = [
    ...
    new Liplex\MultipleFileUploadBundle\LiplexMultipleFileUploadBundle(),
];

配置

每个想要使用多文件上传的字段都必须进行配置。

liplex_multiple_file_upload:
        directory: "%liplex_multiple_file_upload_path%" // Default is set to folder web
    media_class: 'Application\Sonata\MediaBundle\Entity\Media'
    mapping:
        product:
            class: 'Company\Bundle\AppBundle\Entity\Product'
            fields:
                image:
                    field: image
                    context: product.image
                    provider: sonata.media.provider.image
                files:
                    field: files
                    context: product.files
                    provider: sonata.media.provider.file
        ...

字段使用

// Multiple images
->add('images', 'multiple_file_upload', [
    'label' => 'label.images',
    'allow_images' => true,
])

// Multiple files
->add('files', 'multiple_file_upload', [
    'label' => 'label.files',
    'allow_files' => true,
])

// Set maximal file size to 20 MB
->add('files', 'multiple_file_upload', [
    'label' => 'label.files',
    'max_file_size' => 20,
    'allow_files' => true,
])

// Single upload
->add('image', 'multiple_file_upload', [
    'label' => 'label.image',
    'single_upload' => true,
    'allow_images' => true,
])

// Define extensions
->add('file', 'multiple_file_upload', [
    'label' => 'label.file',
    'single_upload' => true,
    'allow_files' => true,
    'allowed_extensions' => [
        'pdf',
        'md'
    ]
])

先决条件

此包正常运行需要一些先决条件。

额外配置

您需要在 sonata_doctrine_orm_admin 配置中设置这些模板。

sonata_doctrine_orm_admin:
    templates:
        form:
            - 'LiplexMultipleFileUploadBundle:Admin/Form:form_fields.html.twig'
        types:
            show:
                multiple_image_view: 'LiplexMultipleFileUploadBundle:Admin/CRUD:show_multiple_image_view.html.twig'
                multiple_file_view: 'LiplexMultipleFileUploadBundle:Admin/CRUD:show_multiple_file_view.html.twig'

路由

liplex_multiple_file_upload:
    resource: "@LiplexMultipleFileUploadBundle/Resources/config/routing.yml"
    prefix:   /

标准布局

standard_layout.html.twig 文件添加以下覆盖。

{% block stylesheets %}
    {{  parent() }}
    <link rel="stylesheet" href="{{ asset('bundles/liplexmultiplefileupload/css/style.css') }}" type="text/css" media="all" />
{% endblock %}

{% block javascripts %}
    {{ parent() }}
    <script src="{{ asset('bundles/liplexmultiplefileupload/js/vendor/angular.min.js') }}" type="text/javascript"></script>
    <script src="{{ asset('bundles/liplexmultiplefileupload/js/vendor/angular-file-upload.min.js') }}" type="text/javascript"></script>
    <script src="{{ asset('bundles/liplexmultiplefileupload/js/vendor/ui-bootstrap.min.js') }}" type="text/javascript"></script>
    <script src="{{ asset('bundles/liplexmultiplefileupload/js/multiple-file-upload/app.js') }}" type="text/javascript"></script>
    <script src="{{ asset('bundles/liplexmultiplefileupload/js/multiple-file-upload/controllers.js') }}" type="text/javascript"></script>
{% endblock %}

{% block body_attributes %}ng-app="{% block angularApp %}app{% endblock %}"{% endblock %}

媒体

由于您必须使用 sonata media bundle 生成自己的媒体实体,因此没有通用的媒体实体可以用于生成媒体实体。因此,您必须在配置中设置自定义类。

仓库

仓库必须扩展 MultipleFileUploadRepository 仓库...

use Liplex\MultipleFileUploadBundle\Repository\MultipleFileUploadRepository;

class YourRepository extends MultipleFileUploadRepository

... 或者必须实现自己的 store 方法。

/**
 * Store one entity.
 *
 * @param mixed $entity
 */
public function store($entity)
{
    $this->getEntityManager()->persist($entity);
    $this->getEntityManager()->flush($entity);
}