Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cmultipileupload';t在CJuiDialog小部件Yii中工作_Yii_Cjuidialog_Cmultifileupload - Fatal编程技术网

cmultipileupload';t在CJuiDialog小部件Yii中工作

cmultipileupload';t在CJuiDialog小部件Yii中工作,yii,cjuidialog,cmultifileupload,Yii,Cjuidialog,Cmultifileupload,我使用带有ajaxlink的CJuiDialog小部件作为弹出窗体。它工作得很好 但是现在我需要从弹出式表单上传多个文件。。所以我使用CMultiFileUpload作为上传选项,但我的行为就像一个普通的单文件按钮。。请帮我解决这个问题。。这是我的密码: <?php echo CHtml::ajaxLink(Yii::t('image','Upload'),array('gallery/create'),array( 'success'=>'js:function(data

我使用带有ajaxlink的CJuiDialog小部件作为弹出窗体。它工作得很好

但是现在我需要从弹出式表单上传多个文件。。所以我使用CMultiFileUpload作为上传选项,但我的行为就像一个普通的单文件按钮。。请帮我解决这个问题。。这是我的密码:

 <?php echo CHtml::ajaxLink(Yii::t('image','Upload'),array('gallery/create'),array(
    'success'=>'js:function(data){
    $("#gallery-form").dialog("open");
    document.getElementById("add_images").innerHTML=data;}'));
$this->beginWidget('zii.widgets.jui.CJuiDialog',array(
            'id'=>'gallery-form',
            'options'=>array(
                'title'=>Yii::t('image','Upload'),
                'autoOpen'=>false,
                'model'=>'true',
                'width'=>'auto',
                'height'=>'auto',
            ),
            ));
echo "<div id='add_images'></div>";
$this->endWidget('zii.widgets.jui.CJuiDialog');  ?>
这是我的渲染部分视图文件,可以在不使用cjuidialog调用的情况下使用multiupload文件,但是当我使用cjuidialog调用它时,它只支持单个文件上载。请帮助

<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'gallery-form',
'enableAjaxValidation'=>true,
 'htmlOptions' => array(
        'enctype' => 'multipart/form-data',),
)); ?>

<?php echo $form->errorSummary($model); ?>
<div class="row">
    <?php echo $form->labelEx($model,'image'); ?>
     <?php
      $this->widget('CMultiFileUpload', array(
         'model'=>$model,
         'name'=>'image',
         'attribute'=>'image',
         'accept'=>'jpg|gif|png',

      ));
    ?>

    <?php echo $form->error($model,'image'); ?>
</div>

<div class="row buttons">
    <?php echo CHtml::submitButton($model->isNewRecord ? 'Upload' : 'Save'); ?>
</div>

<?php $this->endWidget(); ?>

默认情况下,renderPartial不加载脚本,并且CMultiFileUpload小部件使用脚本,因此需要生成renderPartial加载脚本。可以通过更改renderPartial以包含两个额外参数来实现此目的:

$this->renderPartial('viewName', 
    array('variable' => $variable), false, true
); 
注意末尾添加的
false、true
?false表示“不返回视图,显示它”,true表示“后处理”,这将添加脚本

有关更多信息:

[编辑]

下面是加载对话框的另一种方式。它仍然需要renderPartial中的“false,true”:

Yii::app()->clientScript->registerScript('uploadDialog', "
$(function(){
    $('#upload-image').click(function(){
        $('#gallery-form').load('".Yii::app()->createUrl('gallery/create')."', function(){
            $('#gallery-form').dialog('open');
        });
        return false;
    });
});");

echo CHtml::link('Upload', '#', array('id' => 'upload-image'));

$this->beginWidget('zii.widgets.jui.CJuiDialog',array(
    'id'=>'gallery-form',
    'options'=>array(
        'title'=>Yii::t('image','Upload'),
        'autoOpen'=>false,
        'model'=>'true',
        'width'=>'auto',
        'height'=>'auto',
    ),
));

$this->endWidget('zii.widgets.jui.CJuiDialog');
然后,从控制器中删除以下行:

Yii::app()->clientScript->scriptMap['jquery.js'] = false;

如果这仍然不起作用,我建议您直接在CJuiDialog小部件标记之间添加渲染部分,而不是通过ajax加载内容。

您现在可能已经找到了答案(我认为我们处于非常不同的时区),但如果没有,我为您提供了另一种尝试方法。它仍然通过ajax加载对话框内容,只需使用单击事件而不是ajaxLink。我已经对它进行了测试,它对我起到了作用。在上述解决方案中发现了一个小错误。如果我关闭JuiDialoge并重新打开对话框,则会出现这种情况。
TypeError:$.fn.MultiFile.intercepted[method]是未定义的值=$.fn.MultiFile.intercepted[method]。apply(这是参数)clientScript->scriptMap['jquery.js']=false;这就是我所说的完美解决方案。非常感谢,弗罗斯蒂:)
Yii::app()->clientScript->scriptMap['jquery.js'] = false;