sopinet / upload-magic-bundle
Symfony2 Bundle - 为 DropzoneJS 和 OneupUploaderBundle 提供简单集成
dev-master
2016-02-11 17:39 UTC
Requires
- php: >=5.4.0
- oneup/uploader-bundle: 1.0.*@dev
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
- 添加到 composer
"sopinet/upload-magic-bundle": "dev-master"
- 添加到 AppKernel
new Oneup\UploaderBundle\OneupUploaderBundle(), new Sopinet\Bundle\UploadMagicBundle\SopinetUploadMagicBundle(),
- 添加删除路由
upload:
resource: "@SopinetUploadMagicBundle/Controller/UploadController.php"
type: annotation
步骤 2: 配置 OneupUploaderBundle
- 添加配置(config.yml)类似
oneup_uploader: mappings: gallery: frontend: dropzone
- 配置路由
oneup_uploader: resource: . type: uploader
- 更多选项来自 OneupUploaderBundle, https://github.com/1up-lab/OneupUploaderBundle/blob/master/Resources/doc/index.md,但 upload-magic-bundle 仅支持 dropzone 前端方法。
步骤 3: 定义您的实体
- 您可以使用 UploadMagic 特性,因此
namespace yourBundle\BaseBundle\Entity; use ... /** * @ORM\Entity * @ORM\Table(name="file") * @DoctrineAssert\UniqueEntity("id") */ class File { use \Sopinet\Bundle\UploadMagicBundle\Model\UploadMagic; ... }
- 您可以为实体添加关系和其他属性
... /** * @ORM\ManyToOne(targetEntity="Category", inversedBy="files") * @ORM\JoinColumn(name="category_id", referencedColumnName="id") */ protected $category; ...
步骤 4: 添加您的表单
- 添加 CSS
{% include 'SopinetUploadMagicBundle:Upload:simple_css.html.twig' %}
- 添加表单
{% 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"。
有关表单参数的更多文档即将推出... ;)
- 一次添加 JS
{% include 'SopinetUploadMagicBundle:Upload:simple_js.html.twig' %}
如果您遇到加载时间错误,可以使用
{% include 'SopinetUploadMagicBundle:Upload:simple_js.timeout.html.twig' %}
- 为每个表单添加 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' }); });
待办事项
- 有关表单参数的更详细的文档
- 更多即将推出...