2012-07-30 19 views
1

我想加載Yii中的圖片EMarkitupWidget。所以我打開模式窗口multipart/form-dataform,上傳圖像,並試圖從控制器與圖像url的回調。之後,我需要在markitup窗口中粘貼上傳的圖片網址。在Yii Markitup Widget中加載圖片

我該怎麼辦?我想這一點:

set.js: {name:'Picture', key:'P', call: 'markitupimageupload'}, 

此函數打開模態窗口:

<?php $this->beginWidget('zii.widgets.jui.CJuiDialog', array(
    'id'=>'mymodal', 
    'options'=>array(
     'title'=>'Image Upload', 
     'width'=>400, 
     'height'=>200, 
     'autoOpen'=>false, 
     'resizable'=>false, 
     'modal'=>true, 
     'closeOnEscape' => true, 
    ), 
)); ?> 
<?php $model=new ImageForm(); 
    $this->renderPartial('application.views.site.image',array('model'=>$model)); 
?> 
<?php $this->endWidget('zii.widgets.jui.CJuiDialog'); ?> 

形式:

class ImageForm extends CFormModel { 
public $image; 
// другие свойства 

public function rules(){ 
    return array(
     // устанавливаем правила для файла, позволяющие загружать 
     // только картинки! 
     array('image', 'file', 'types'=>'jpg, gif, png'), 
    ); 
} 
} 

表單視圖

function markitupimageupload(){ 
    $('#mymodal').dialog('open'); 
} 

與形式的模態窗口:

<div class="form"> 
    <?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'image-upload-form', 
    'action'=>array('/image/uploadnew'), 
    'enableClientValidation'=>true, 
    'clientOptions'=>array(
     'validateOnSubmit'=>true, 
    ), 
    'htmlOptions'=>array('enctype'=>'multipart/form-data'), 
)); ?> 

    <?php echo CHtml::errorSummary($model); ?> 

    <div class="row"> 
     <?php echo $form->labelEx($model,'image'); ?> 
     <?php echo CHtml::activeFileField($model,'image'); ?> 
     <?php echo CHtml::error($model,'image'); ?> 
    </div> 

    <div class="row buttons"> 
     <?php echo CHtml::ajaxSubmitButton('Upload','/websnippets/image/uploadnew', 
     array('type' => 'POST', 
      'success' => 'function(){ $("#mymodal").dialog("close");}',)); 
     //echo CHtml::submitButton('Upload'); 
     ?> 
    </div> 

    <?php $this->endWidget(); ?> 
</div><!-- form --> 

問題:那麼我使用CHtml :: submitButton('Upload'),文件正在上傳OK。但我需要獲取文件名url。然後我使用CHtml :: ajaxSubmitButton,我可以接受Json響應,但是文件沒有加載。如何解決這個問題?

回答

0

返回您actionUploadnew控制器的文件名 - 例如:

echo CJSON::encode(array('filepath'=>$filepath)); 

在回調的javascript,你訪問它想:

'success' => 'function(data){ console.log(data.filepath); }' 
0

有一個jQuery form plugin,使您提交即使您有文件,也可以通過AJAX創建表單。它非常易於使用,而且功能強大。您可以將表單提交給返回帶有文件名的JSON編碼對象的操作,然後使用該操作。