我在YII中构建了一个表单,我需要处理一个上传的文件。我跟着this guide,但我偶然发现了一个问题。 CUploadedFile::getInstance
始终返回null。
这是我使用的。我的模特:
class AdditionalFieldFile extends CFormModel {
public $uploadedFile;
/**
* @return array validation rules for model attributes.
*/
public function rules() {
return array(
//note you wont need a safe rule here
array('uploadedFile', 'file', 'allowEmpty' => true, 'types' => 'zip,doc,xls,ppt,jpg,gif,png,txt,docx,pptx,xlsx,pdf,csv,bmp'),
);
}
}
在表单提交处理控制器中的上传文件:
$model = new AdditionalFieldFile();
$model->uploadedFile = CUploadedFile::getInstance($model, 'field_'.$type_field.'['.$id_common.']');
之后$model->uploadedFile
由于某种原因为空。
请注意,$type_field
和$id_common
是动态的。
此外,表单有'enctype'=>'multipart/form-data'
,所以这不是原因。
答案 0 :(得分:0)
好的,接下来是自我回答。
事实证明,我必须使用扩展CFormModel
的类的实例作为模型,在视图中使用活动文件字段。
解决方案:
CHtml::activeFileField(new AdditionalFieldFile(), 'field_'.$type_field.'['.$id_common.']');