sopinet/upload-magic-bundle

Symfony2 Bundle - 为 DropzoneJS 和 OneupUploaderBundle 提供简单集成

安装: 342

依赖者: 0

建议者: 0

安全: 0

星标: 2

关注者: 8

分支: 0

语言:JavaScript

类型:symfony-bundle

dev-master 2016-02-11 17:39 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:27:10 UTC


README

upload-magic-bundle

Symfony2 Bundle - 为 DropzoneJS 和 OneupUploaderBundle 提供简单集成

先决条件

此包在 Symfony2 版本 2.3+ 上进行了测试。

安装

步骤 1: 添加 Bundle

  1. 添加到 composer
"sopinet/upload-magic-bundle": "dev-master"
  1. 添加到 AppKernel
new Oneup\UploaderBundle\OneupUploaderBundle(),
new Sopinet\Bundle\UploadMagicBundle\SopinetUploadMagicBundle(),
  1. 添加删除路由
upload:
    resource: "@SopinetUploadMagicBundle/Controller/UploadController.php"
    type:     annotation

步骤 2: 配置 OneupUploaderBundle

  1. 添加配置(config.yml)类似
oneup_uploader:
    mappings:
        gallery:
            frontend: dropzone
  1. 配置路由
oneup_uploader:
    resource: .
    type: uploader
  1. 更多选项来自 OneupUploaderBundle, https://github.com/1up-lab/OneupUploaderBundle/blob/master/Resources/doc/index.md,但 upload-magic-bundle 仅支持 dropzone 前端方法。

步骤 3: 定义您的实体

  1. 您可以使用 UploadMagic 特性,因此
namespace yourBundle\BaseBundle\Entity;

use ...

/**
 * @ORM\Entity
 * @ORM\Table(name="file")
 * @DoctrineAssert\UniqueEntity("id")
 */
class File
{
	
	use \Sopinet\Bundle\UploadMagicBundle\Model\UploadMagic;
	...
}
  1. 您可以为实体添加关系和其他属性
  ...
	/**
	 * @ORM\ManyToOne(targetEntity="Category", inversedBy="files")
	 * @ORM\JoinColumn(name="category_id", referencedColumnName="id")
	 */
	protected $category;
	...

步骤 4: 添加您的表单

  1. 添加 CSS
{% include 'SopinetUploadMagicBundle:Upload:simple_css.html.twig' %}
  1. 添加表单
								{% include 'SopinetUploadMagicBundle:Upload:simple.html.twig'
								  	with {
								  		'name': 'demo',
								  		'type': 'gallery',
								  		'id': 0, 
								  		'entity': 'myBundle_BaseBundle_File',
								  		'param1': 'title',
                			'value1': 'A title for...',
                			'param2': 'myBundle_BaseBundle_Category',
                			'value2': guild.id,
                			'icon': 'fa fa-plus-circle'
										}
								  %}

在 param1 中我使用 "title",监听器将执行 "setTitle"。

对于 param2,它使用一个实体,并将执行 findbyoneid 并再次 "set"。

有关表单参数的更多文档即将推出... ;)

  1. 一次添加 JS
{% include 'SopinetUploadMagicBundle:Upload:simple_js.html.twig' %}

如果您遇到加载时间错误,可以使用

{% include 'SopinetUploadMagicBundle:Upload:simple_js.timeout.html.twig' %}
  1. 为每个表单添加 blockjs
	{% include 'SopinetUploadMagicBundle:Upload:simple_blockjs.html.twig' 
		with {
		  'name': 'demo', 
		  'type': 'gallery', 
		  'files': files_already_saved_array, 
		  'limit': 1, 
		  'entity': 'myBundle_BaseBundle_File'
		  # Optional
		  'preview': true
		} 
	%}

更多 JS 触发

您可以捕获上传的文件或删除文件的事件,在 jQuery 中进行任何操作。

事件

$( "body" ).on( "removedFile", function( event, data) {
  // data, "ok" or "ko"
});

$("body").on("uploadedFile", function(event, data) {
  // data, "ok"
});

示例

$( "body" ).on( "removedFile", function( event, data) {
	if (data == "ok") {
		$.gritter.add({
			title: '<i class="fa fa-check-circle"></i> Acción realizada con éxito',
			text: 'Has eliminado un fichero',
			sticky: false,
			time: '',
			class_name: 'gritter-success'
		});
	} else {
		$.gritter.add({
			title: '<i class="fa fa-times-circle"></i> Ha ocurrido un error',
			text: 'No se ha podido eliminar el fichero',
			sticky: false,
			time: '',
			class_name: 'gritter-danger'
		});								
	}			
});
$("body").on("uploadedFile", function(event, data) {
	$.gritter.add({
		title: '<i class="fa fa-check-circle"></i> Acción realizada con éxito',
		text: 'Has guardado un fichero',
		sticky: false,
		time: '',
		class_name: 'gritter-success'
	});			
});

待办事项

  1. 有关表单参数的更详细的文档
  2. 更多即将推出...