0

我在 YII 中建立了一个表单,我需要处理一个上传的文件。我遵循了这个指南,但我偶然发现了一个问题。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'所以这不是原因。

4

1 回答 1

0

好的,下面是一个自我回答。

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

解决方案:

CHtml::activeFileField(new AdditionalFieldFile(), 'field_'.$type_field.'['.$id_common.']');
于 2013-05-21T12:39:48.773 回答