Для использования расширения необходимо скачать его. Скачать вы можете с официального сайта Yii Framework: http://www.yiiframework.com/extension/xupload/ или с сайта кодер.укр: скачать.
Распаковываем содержимое архива в папку /protected/extensions переименовываем папку xupload-x.x.x в xupload
Если вы качали плагин с сайта Yii Framework, то при использовании Yii framework v 1.16 и выше вы можете столкнуться со следующей ошибкой:
TypeError: that is undefined
TypeError: that is undefined /assets/bde6a3e7/js/jquery.fileupload-ui.js Line 88
Line 88
TypeError: that is undefined
options = that.options,
Для исправления этой ошибки необходимо открыть файл /protected/extensions/xupload/assets/js/jquery.fileupload-ui.js и заменить строку 88 с
var that = $(this).data('fileupload'),
на
var that = $(this).data('blueimpUI-fileupload'),
После чего очистите папку /assets в корне проекта. В архиве с сайта кодер.укр это уже исправлено.
Далее открываем файл /protected/config/main.php для редактирования и добавляем алиас для расширения xupload:
<?php
return array( //...
'import'=>array( 'application.models.*', 'application.components.*', ),
'aliases' => array( 'xupload' => 'ext.xupload' ),
//... );
Следующим шагом необходимо переопределить CController::actions() и зарегистрировать действие класса XUploadAction для загрузки и настройки свойств (файл: /protected/controllers/SiteControllers.php):
<?php
class SiteController extends Controller {
/** * Declares class-based actions. */ public function actions() { return array( // captcha action renders the CAPTCHA image displayed on the contact page 'captcha' => array( 'class' => 'CCaptchaAction', 'backColor' => 0xFFFFFF, ), // page action renders "static" pages stored under 'protected/views/site/pages' // They can be accessed via: index.php?r=site/page&view=FileName 'page' => array( 'class' => 'CViewAction', ), //добавляем действие upload для загрузки файлов 'upload'=>array( 'class'=>'xupload.actions.XUploadAction', 'path' =>Yii::app() -> getBasePath() . "/../uploads", 'publicPath' => Yii::app() -> getBaseUrl() . "/uploads", ), ); }
//... }
Где path - путь к папке загрузки файла, publicPath - url к папке загрузки файла.
Создадим действие, в котором будем выводить форму с помощью XUploadModel (файл: /protected/controllers/SiteControllers.php):
<?php class SiteController extends Controller {
//...
public function actionXUpload() { Yii::import("xupload.models.XUploadForm"); $model = new XUploadForm; $this->render('xUpload', array('model' => $model, )); }
//...
}
В файле представления(view) выводим виджет с формой для загрузки файлов (файл: /themes/themeName/views/site/xUpload.php):
<?php
$this->widget('xupload.XUpload', array( 'url' => Yii::app()->createUrl("site/upload"), 'model' => $model, 'attribute' => 'file', 'multiple' => true, ));
Все, расширение готово к работе.
Дополнительные настройки XUpload
Разрешим загружать только изображения (png, jpg, jpeg), и установим для них максимальный размер (3 Mb), для этого добавим в настройки виджета параметр options:
'options' => array( 'maxFileSize' => 3000000, 'acceptFileTypes' => "js:/(\.|\/)(jpe?g|png)$/i", )
После чего файл /themes/themeName/views/site/xUpload.php примет вид:
<?php
$this->widget('xupload.XUpload', array( 'url' => Yii::app()->createUrl("site/upload"), 'model' => $model, 'attribute' => 'file', 'multiple' => true, 'options' => array( 'maxFileSize' => 3000000, 'acceptFileTypes' => "js:/(\.|\/)(jpe?g|png)$/i", ) ) );
Так же мы можем добавить дроп зону (drop zone effects) для загрузки файлов пример (файл: /themes/themeName/views/site/xUpload.php):
<?php
$this->widget('xupload.XUpload', array( 'url' => Yii::app()->createUrl("site/upload"), 'model' => $model, 'attribute' => 'file', 'multiple' => true, )); ?>
<div id="dropzone">Перетащите файл сюда для загрузки</div>
<style> #dropzone { background: #C6C6C6; width: 100%; text-align: center; font-weight: bold; padding: 50px 0; } </style>
Подробную информацию по настройке дроп зоны (drop zone) можно посмотреть здесь: https://github.com/blueimp/jQuery-File-Upload/wiki/Drop-zone-effects
Wiki плагина jQuery-File-Upload здесь: https://github.com/blueimp/jQuery-File-Upload/wiki
Сайт плагина: http://blueimp.github.io/jQuery-File-Upload/
Комментарии
файлов:
Ответитьprotected/config/main.php
protected/controllers/SiteControllers.php
не существует
Выполни в корне сайта, в консоле
Ответитьphp init