我将此代码添加到我的视图中:
<?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',
...
但是当我想通过像
这样的东西来达到图像元素的时候$模型 - &GT;图像
它返回空!!但是我可以通过$ model-&gt;来重新设置其他元素。 !!
我看到Yii在输入文件字段上方添加隐藏字段,当我发布数据时,它假设为图像字段!!!
什么是帽子隐藏的领域?
为什么我不能像其他字段一样到达文件字段?
为什么我的代码不起作用?
答案 0 :(得分: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/
答案 1 :(得分:0)
.serialize()
不适合这样的文件输入。你必须使用像FormData
var data=new FormData($("#myform")[0]);
$.ajax({
dataType:'html',
url: sendurl,
data: data,
contentType:false,
processData:false,
type: 'post',