1

Yii EMarkitupWidget に画像を読み込もうとしています。だから私はモーダルウィンドウを開き、multipart/form-data form画像をアップロードし、画像のURLでコントローラーからコールバックを取得しようとしています。その後、アップロードした画像の URL をマークアップ ウィンドウに貼り付ける必要があります。

どうすればいいですか?私はこれを試しています:

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

この関数は、モーダル ウィンドウを開きます。

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

フォームを持つモーダル ウィンドウ:

<?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'),
    );
}
}

フォーム ビュー:

<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') を使用すると、ファイルは正常にアップロードされます。しかし、ファイル名の URL を取得する必要があります。次に、CHtml::ajaxSubmitButton を使用します。Json 応答を取得できますが、ファイルが読み込まれません。これを解決するには?

4

2 に答える 2

0

actionUploadnew コントローラでファイル名を返します - 例:

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

コールバック JavaScript では、次のようにアクセスします。

'success' => 'function(data){ console.log(data.filepath); }'
于 2012-07-30T22:48:50.177 に答える
0

ファイルが含まれている場合でも、AJAX を介してフォームを送信できるようにするjQueryフォーム プラグインがあります。非常に使いやすく、非常に強力です。JSON でエンコードされたオブジェクトをファイル名とともに返すアクションにフォームを送信し、それを操作できます。

于 2012-08-09T12:51:04.307 に答える