rockbee/uploader-bundle

本包通过AjaxUpload库增强Symfony2文件上传体验

安装: 184

依赖者: 0

建议者: 0

安全: 0

星星: 0

关注者: 2

分支: 0

语言:JavaScript

类型:symfony-bundle

dev-master 2013-05-30 11:21 UTC

This package is not auto-updated.

Last update: 2024-09-22 03:07:17 UTC


README

EWZUploaderBundle通过使用AjaxUpload库来增强Symfony2的文件上传体验。

安装

步骤 1:使用Composer(推荐)

要使用Composer安装EWZUploaderBundle,只需将以下内容添加到您的composer.json文件中

// composer.json
{
    // ...
    require: {
        // ...
        "excelwebzone/uploader-bundle": "master-dev"
    }
}

注意:请将上面的代码片段中的master-dev替换为最新的稳定分支,例如1.0.*

然后,您可以通过在您的composer.json文件所在的目录中运行Composer的update命令来安装新的依赖项

$ php composer.phar update

现在,Composer将自动下载所有必需的文件,并为您安装它们。接下来需要做的就是更新您的AppKernel.php文件,并注册新的包

<?php

// in AppKernel::registerBundles()
$bundles = array(
    // ...
    new EWZ\Bundle\UploaderBundle\EWZUploaderBundle(),
    // ...
);

步骤 1(替代):使用deps文件(Symfony 2.0.x)

首先,从代码中检出一份副本。只需将以下内容添加到您的Symfony Standard Distribution的deps文件中

[EWZUploaderBundle]
    git=http://github.com/excelwebzone/EWZUploaderBundle.git
    target=/bundles/EWZ/Bundle/UploaderBundle

然后,在您的内核中注册该包

<?php

// in AppKernel::registerBundles()
$bundles = array(
    // ...
    new EWZ\Bundle\UploaderBundle\EWZUploaderBundle(),
    // ...
);

确保您还向自动加载器注册了命名空间

<?php

// app/autoload.php
$loader->registerNamespaces(array(
    // ...
    'EWZ'              => __DIR__.'/../vendor/bundles',
    // ...
));

现在使用vendors脚本来将新添加的存储库克隆到您的项目中

$ php bin/vendors install

步骤 2:配置包的

配置就像选择一个上传目录并设置默认文件权限(如大小和MIME类型)一样简单

# app/config/config.yml

ewz_uploader:
    load_jquery: false
    media:
        max_size: 5120k
        mime_types: ['audio/wav', 'audio/x-wav', 'audio/wave', 'audio/x-pn-wav']
        dir: %kernel.root_dir%/../media
        folder: uploads
    url:
        upload: ewz_uploader_file_upload
        remove: ewz_uploader_file_remove
        download: ewz_uploader_file_download

注意:如果您启用了load_jquery,它将自动从Google API直接包含库。

注意:要禁用文件下载,只需将download: false

恭喜!您已经准备好了!

基本用法

现在所有配置都已完成,我们将探讨如何将EWZUploaderBundle集成到您的应用程序中。我们将假设您已经创建了一个包含上传字段的表单类型对象。所以您需要做的就是

<?php

public function buildForm(FormBuilder $builder, array $options)
{
    // ...
    $builder->add('audio', 'ewz_uploader');
    // ...
}

您也可以为每个字段设置特殊的配置

<?php

public function buildForm(FormBuilder $builder, array $options)
{
    // ...
    $builder->add('audio', 'ewz_uploader', array(
        'max_size'     => '5120k',
        'mime_types'   => array(
            'audio/wav',
            'audio/x-wav',
            'audio/wave',
            'audio/x-pn-wav'
        ),
        'folder'       => 'music',
        'url_upload'   => $this->router->generate('ewz_uploader_file_upload'),
        'url_remove'   => $this->router->generate('ewz_uploader_file_remove'),
        'url_download' => $this->router->generate('ewz_uploader_file_download'),
    ));
    // ...
}

注意:验证很简单,就像处理一个隐藏字段一样。

太棒了,现在您可以为页面添加表单小部件了

PHP:

<?php

// load resources
echo $view['ewz_uploader']->initialize();
// ...

$view['form']->setTheme($form, array('EWZUploaderBundle:Form'));

echo $view['form']->widget($form['audio'], array(
    'mime_types' => array(
        'audio/wav',
        'audio/x-wav',
        'audio/wave',
        'audio/x-pn-wav'
    ),
));

Twig:

{# load resources #}
{{ ewz_uploader_initialize() }}
{# ... #}


{% form_theme form 'EWZUploaderBundle:Form:ewz_uploader_widget.html.twig' %}

{{ form_widget(form.audio, { 'attr': {
    'mime_types': [
        'audio/wav',
        'audio/x-wav',
        'audio/wave',
        'audio/x-pn-wav'
    ],
} }) }}