1

このコードをビューに追加します。

<?php echo $form->labelEx($model,"image:"); ?>
<?php echo $form->fileField($model, 'image'); ?>

そしてこれを私のCFormModelに:

public $image;

および CFormModel ルールでは:

array('image', 'file', 'allowEmpty'=>true),

jquery ajaxで送信します:

...
    var dataString=$("#myform").serialize();
    $.ajax({
            dataType:'html',
            url: sendurl,
            data: dataString,
            type: 'post',
...

しかし、次のようなもので画像要素に到達したい場合

$モデル->画像

それは空を返します!! しかし、 $model-> で他の要素を取得できます!!

Yiiが入力ファイルフィールドの上に隠しフィールドを追加し、データを投稿すると画像フィールドと見なされることがわかりました!!!

帽子隠しフィールドとは?

他のフィールドのようにファイル フィールドにアクセスできないのはなぜですか?

コードが機能しないのはなぜですか?

4

2 に答える 2

1

htmlOptions次のようなものを使用する必要があると思います。

$this->beginWidget('CActiveForm', array(
  'id'=>'activity_form', 
  'enableAjaxValidation'=>true, 
  'stateful'=>true, 
  'htmlOptions'=>array('enctype' => 'multipart/form-data')
));

詳細については、次のリンクを参照してください。

http://www.yiiframework.com/wiki/2/how-to-upload-a-file-using-a-model/

于 2013-05-11T18:32:46.667 に答える
0

.serialize()そのようなファイル入力では動作しません。次のようなものを使用する必要がありますFormData

var data=new FormData($("#myform")[0]);
$.ajax({
        dataType:'html',
        url: sendurl,
        data: data,
        contentType:false,
        processData:false,
        type: 'post',

http://caniuse.com/xhr2

于 2013-05-11T18:29:50.240 に答える