Аяксом вызывается экшен контроллера
Код: Выделить всё
/**
* Добавить документ
*
* @param $id
* @throws CException
* @internal param mixed $check
*/
public function actionAdd($id)
{
$id = (int)$id;
$model = new DocumentsModel;
$model->statement_id = $id;
//отключил повторную загрузку скриптов(бубен 1)
if (Yii::app()->request->isAjaxRequest) {
Yii::app()->clientScript->scriptMap['jquery.js'] = false;
Yii::app()->clientScript->scriptMap['jquery-ui.min.js'] = false;
Yii::app()->clientScript->scriptMap['bootstrap.js'] = false;
}
$this->renderPartial('modal_add_document', array(
'id' => $id,
'model' => $model
), false, true);//выставил proccessOutput true(бубен2)
Код: Выделить всё
<form method="post" action="/panels/documents/add/id/<?= $id ?>" enctype="multipart/form-data">
<div class="modal-header">
<button style="margin-top:-10px;" type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
</div>
<div class="modal-body">
<div class="control-group">
<label for="" class="control-label">Выберите файл<span class="required">*</span>
</label>
<div class="controls">
<input type="file" name="DocumentsModel[filename]" required id="uploadFile">
</div>
</div>
<?php $this->widget('ext.dropzone.EDropzone', array(
'name' => 'DocumentsModel[upload]',
'url' => $this->createUrl('document/add/id/' . $id),
'onSuccess' => 'alert("iiii")',
'options' => array(),
)) ?>
<div class="modal-footer">
<button type="button" class="btn" data-dismiss="modal" aria-hidden="true">Отмена</button>
<button type="submit" class="btn btn-info" ID="submitButton">Отправить</button>
</div>
</form>
Код: Выделить всё
class EDropzone extends CWidget {
/**
* @var string The name of the file field
*/
public $name = false;
/**
* @var CModel The model for the file field
*/
public $model = false;
/**
* @var string The attribute of the model
*/
public $attribute = false;
/**
* @var array An array of options that are supported by Dropzone
*/
public $options = array();
/**
* @var string The URL that handles the file upload
*/
public $url = false;
/**
* @var array An array of supported MIME types
*/
public $mimeTypes = array();
/**
* @var string The Javascript to be called in case of a succesful upload
*/
public $onSuccess = false;
/**
* Create a div and the appropriate Javascript to make the div into the file upload area
*/
public function run() {
if (!$this->url || $this->url == '')
$this->url = Yii::app()->createUrl('site/upload');
echo CHtml::openTag('div', array('class' => 'dropzone', 'id' => 'fileup'));
echo CHtml::closeTag('div');
if (!$this->name && ($this->model && $this->attribute) && $this->model instanceof CModel)
$this->name = CHtml::activeName($this->model, $this->attribute);
$this->mimeTypes = CJavaScript::encode($this->mimeTypes);
$options = CMap::mergeArray(array(
'url' => $this->url,
'parallelUploads' => 1,
'paramName' => $this->name,
'accept' => "js:function(file, done){if(jQuery.inArray(file.type,{$this->mimeTypes})){done('File type not allowed.');}else{done();}}",
'init' => "js:function(){this.on('success',function(file){{$this->onSuccess}});}"
), $this->options);
$options = CJavaScript::encode($options);
$script = "Dropzone.options.fileup = {$options}";
$this->registerAssets();
Yii::app()->getClientScript()->registerScript(__CLASS__ . '#' . $this->getId(), $script, CClientScript::POS_END);
}
public function registerAssets() {
$basePath = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'assets' . DIRECTORY_SEPARATOR;
$baseUrl = Yii::app()->getAssetManager()->publish($basePath, false, 1, YII_DEBUG);
Yii::app()->getClientScript()->registerCoreScript('jquery');
Yii::app()->getClientScript()->registerScriptFile("{$baseUrl}/js/dropzone.js", CClientScript::POS_END);
Yii::app()->getClientScript()->registerCssFile("{$baseUrl}/css/dropzone.css");
}
}