bilginnet/yii2-plupload

Yii2 Plupload 队列小部件

安装: 266

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

语言:JavaScript

类型:yii2-extension

1.0.1 2018-11-06 12:27 UTC

This package is not auto-updated.

Last update: 2024-09-21 13:57:45 UTC


README

Yii2 Plupload 队列小部件

Minimum PHP Version Latest Stable Version Total Downloads Latest Unstable Version License

安装

通过 composer 安装此扩展是首选方式。

运行以下命令之一

php composer.phar require --prefer-dist bilginnet/yii2-plupload "dev-master"

或者

"bilginnet/yii2-plupload": "dev-master"

将以下内容添加到您的 composer.json 文件中的 require 部分。

用法

在控制器文件中添加以下内容

public function actions() {
    return [
        'plupload' => [
            'class' => \bilginnet\plupload\PluploadAction::className(),
            // upload path from alias - default is '@webroot/uploads' or set your alias path sample: '@yourpath'
            // set your alias into config in your main-local config file before return[]
            // Yii::setAlias('@yourpath', '@webroot/uploads/'); 
            'targetDir' => '@webroot/uploads',
            'uploadComplete' => function ($filePath, $params) {
                // Do something with file
            }
        ],
    ];
}

在您的 _form 文件中添加以下内容

<?= \bilginnet\plupload\Plupload::widget([
    'url' => ['plupload'], // sync url name to action name in controller actions
    
    // optional unique name of uploader
    // will set automatically if not set
    'uploader' => $uploaderName = uniqid('uploader_'),
    
    // auto start when files selected default true
    // you can set false this if you want to start uploader when form submitting
    /* 
    sample: 
    $('button[type="submit"]').click(function(event) {
        
        var _form = $('form');
        
        // ajax form validate
        $.ajax({
            type: 'post',
            url: 'ajaxValidateActionUrl', // set your url
            data: _form.serializeArray()
        }).done(function(data) {            
            if (data === 'true') {
                // ajax validate is true
            
                var myUploader = <?= $uploaderName ?>;
                myUploader.bind("UploadComplete", function(uploader, files) {
                    // do something
                    
                    _form.submit();
                });
                myUploader.start();
                        
            } else {
                // ajax validate is false
                _form.submit();
            }
        });
    });
    // in controller ajaxValidateAction
    public function actionAjaxValidate() {
        $model = new Model();
        if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
            if ($model->validate()) {
                print_r('true');
            } else {
                print_r('false');
            }
        }    
    }
    */
    'startOnSelect' => true
    
    'browseLabel' => 'Upload',
    'browseOptions' => ['id' => 'browse', 'class' => 'btn btn-success'],
    'options' => [
        'multi_selection' => false, // set true for multiple files
        'filters' => [
            'mime_types' => [
                ['title' => 'Image files', 'extensions' => 'jpg,jpeg,png,gif'],                
            ],
        ],
    ],
    'events' => [
        'FilesAdded' => 'function(uploader, files){                            
            $("#browse").button("loading");
        }',
        'FileUploaded' => 'function(uploader, file, response){
            $("#browse").button("reset");
        }',
        'Error' => 'function (uploader, error) {                            
            $("#browse").button("reset");
        }'
    ],
]); ?>

请参阅 Plupload 文档: http://www.plupload.com/docs/v2/pluploadQueue

注意

您可以在一个文件中使用多个小部件,例如

<?= \bilginnet\plupload\Plupload::widget($options1); ?>
<?= \bilginnet\plupload\Plupload::widget($options2); ?>