Обёртка для плагина jQuery Uploadify
Используем в представлении views/form.php:
$this->widget('ext.yiiext.widgets.uploadify.EUploadifyWidget', array( // можно использовать как для поля модели 'model'=>new UploadifyFile, 'attribute'=>'uploadifyFile', // так и просто для элемента формы 'name'=>'my_input_name', // Имя POST-параметра, через который будет посылаться ИД сессии 'sessionParam'=>'PHP_SESSION_ID', // [настройки](http://www.uploadify.com/documentation/) плагина 'options'=>array( 'fileExt'=>'*.jpg;*.png;*.gif', 'script'=>$this->createUrl('controller/action'), 'auto'=>false, 'multi'=>true, 'buttonText'=>'Upload Images', ), ));
Использование бета-версии 3.0.0
$this->widget('ext.yiiext.widgets.uploadify.EUploadifyWidget',array( 'package'=>array( 'basePath'=>Yii::getPathOfAlias('ext.yiiext.widgets.uploadify').'/vendors/jquery.uploadify-v3.0.0', 'js'=>array( 'jquery.uploadify'.(YII_DEBUG?'':'.min').'.js', 'swfobject.js', ), 'css'=>array( 'uploadify.css', ), 'depends'=>array( 'jquery', ), ), ));
Пример использования
Для использования нам нужны:
- Модель формы.
- Действие контроллера.
Пример модели
UploadifyFile.php:
class UploadifyFile extends CFormModel { public $uploadifyFile; public function rules() { return array( array( 'uploadifyFile', 'file', 'maxSize'=>1024*1024*1024, 'types'=>'jpg, png, gif, txt', ), ); } }
Пример действия
Действие можно описать и как обычное действие контроллера, но здесь мы используем CAction, описанный в полном руководстве.
class SwfUploadAction extends CAction { public $folder; public function run() { $folder=$this->folder; if($folder===FALSE) { throw new CException(Yii::t(__CLASS__,"Folder does not exists.",array())); } if(isset($_FILES['UploadifyFile'])===true) { $model=new UploadifyFile; $model->attributes=array('uploadifyFile'=>''); $model->uploadifyFile=CUploadedFile::getInstance($model,'uploadifyFile'); if($model->validate()===false) { throw new CException(Yii::t(__CLASS__,"Invalid file.",array())); } if(!$model->uploadifyFile->saveAs($folder.'/'.$model->uploadifyFile->getName())) { throw new CException(Yii::t(__CLASS__,"Upload error.",array())); } else { die("Upload success"); } } else { throw new CException(Yii::t(__CLASS__,"File not sent.",array())); } throw new CException(Yii::t(__CLASS__,'Unknown error.',array())); } }
Вы также можете использовать [EFileUploadAction] из yiiext.
Changelog
1.7
Warning: this version is not backwards compatible to 1.6 and required framework version 1.1.7.
- Add experemental JS for beta version 3.0.0. (Veaceslav Medvedev)
- JS updated to version 2.1.4 (Veaceslav Medvedev)
1.6
- Added property $sessionParam that can be used to send session id via POST. (Veaceslav Medvedev)
- JS updated to version 2.1.3. (Veaceslav Medvedev)
- Fixed error with
fileDescoption. (Veaceslav Medvedev)
1.5
- Code optimization. (Veaceslav Medvedev)
1.4
- Rename class to EUploadifyWidget (Veaceslav Medvedev)
1.3
- readme_ru, readme_en. (Veaceslav Medvedev)
- Code style fixes. (Veaceslav Medvedev)
- Compatible with Yii 1.1. (Veaceslav Medvedev)
- New naming conventions. (Veaceslav Medvedev)
1.2
- Transformed module into widget extension. (Veaceslav Medvedev)
1.1
- Initial public release. (Veaceslav Medvedev)