CUploadedFile :: getInstance始终在上载的文件中返回Null

时间:2013-05-21 08:09:17

标签: forms yii

我在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',所以这不是原因。

1 个答案:

答案 0 :(得分:0)

好的,接下来是自我回答。

事实证明,我必须使用扩展CFormModel的类的实例作为模型,在视图中使用活动文件字段。

解决方案:

CHtml::activeFileField(new AdditionalFieldFile(), 'field_'.$type_field.'['.$id_common.']');