2012-09-12 5 views
0

Q : cjuidialog 위젯으로 파일을 업로드하는 방법은 무엇입니까?cjuidialog 위젯으로 파일을 업로드하는 방법?

설명 : 팝업 상자가있는 파일 하나를 업로드하고 싶습니다. 그래서 나는 cjuidialog 상자 위젯을 선택합니다. 그리고 나는 here을 따랐다. 하지만 저축과 검증에 직면하고 있습니다. 제출 후 데이터를 저장하지 않고 유효성 검사에 실패하면 팝업 상자가 계속해서 다시 표시됩니다 (중복).

이있다보기/AA/_form.php

<?php 
    echo CHtml::ajaxLink(Yii::t('attachment','Attachment'),$this->createUrl('attachmentform'),array(
     'onclick'=>'$("#attachDialog").dialog("open"); return false;', 
     'update'=>'#attachDialog' 
     ),array('id'=>'showattachDialog', 'class'=>'btn btn-info')); 
    ?> 

이쪽 제어기/aacontroller.php

public function actionAttachmentForm() 
    { 
     $media=new Media; 
     $this->performAjaxValidation($media); 
     $flag=true; 
     if(isset($_POST['Media'])) 
     {  
      $flag=false; 
      $media->attributes=$_POST['Media']; 


      $media->name=CUploadedFile::getInstance($media,'name'); 

      var_dump($media->attributes); 

      if($media->save()) { 
       //do something here and renderPartial to uploadedfile.php to show uploaded files. 
       $this->renderPartial('uploadedFile','',false,true); 
      } 
     } 

     if($flag == true) { 
      Yii::app()->clientScript->scriptMap['jquery.js'] = false; 

     } 
     $this->renderPartial('uploadform',array('model'=>$media,),false,true); 

    } 

이있다보기/AA/uploadform.php

$this->beginWidget('zii.widgets.jui.CJuiDialog',array(
       'id'=>'attachDialog', 
       'options'=>array(
        'title'=>Yii::t('attachment','Attachment Form'), 
        'autoOpen'=>true, 
        'modal'=>'true', 
        'width'=>'450', 
        'height'=>'300', 
        'draggable' => false, 
        'resizable'=> false, 
       ), 
       )); 
echo $this->renderPartial('_formupload', array('model'=>$model)); ?> 
<?php $this->endWidget('zii.widgets.jui.CJuiDialog'); 

이보기/aa/_formupload.php

<div class="form" id="attachDialogForm"> 

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'attach-form', 
    'enableAjaxValidation'=>true, 
    'htmlOptions' => array('enctype' => 'multipart/form-data'), 
)); 
//I have enableAjaxValidation set to true so i can validate on the fly the 
?> 

    <p class="note">Fields with <span class="required">*</span> are required.</p> 

    <?php //echo $form->errorSummary($model); ?> 


    <div class="row"> 
     <?php echo $form->labelEx($model,'name'); ?> 
     <?php echo $form->fileField($model,'name'); ?> 
     <?php echo $form->error($model,'name'); ?> 
    </div> 

    <div class="row"> 
     <?php echo $form->labelEx($model,'description'); ?> 
     <?php echo $form->textField($model,'description'); ?> 
     <?php echo $form->error($model,'description'); ?> 
    </div> 


    <div class="row buttons"> 
     <?php 
     echo CHtml::ajaxSubmitButton(Yii::t('attachment','Upload'), 
      CHtml::normalizeUrl(array('attachmentform','render'=>false)),array(
      //'beforeSend' => 'function(){$("#uploadedfile").addClass("loading");}', 
      //'complete' => 'function(){$("#uploadedfile").removeClass("loading"); $("#attachDialog").dialog("close");}', 
      'success'=>'js: function(data) { 
       //alert(data); 
      $("#attachDialog").dialog("close"); 
      $("#uploadedfile").html(data); 
     }'),array('id'=>'closeattachDialog')); 
     ?> 
    </div> 

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

</div> 

답변

0

나는 'EAjaxUpload' 확장을 권장합니다. 매우 사용하기 쉽습니다. 질문이 있으시면 구현해 봤기 때문에 도와 드릴 수 있습니다.