2013-05-21 63 views
0

我在YII中構建了一個表單,我需要處理上傳的文件。我跟着this guide,但我偶然發現了一個問題。 CUploadedFile::getInstance總是返回null。CUploadedFile :: getInstance在上傳的文件上總是返回空

這是我使用的。我的模型:

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

你能顯示您的控制器和視圖更多的代碼? – darkheir

+1

你確定''field_'。$ type_field。'['。$ id_common。']''生成正確的名字嗎? –

+0

我認爲你應該把'CUploadedFile :: getInstance($ model,'uploadedFile');'但這取決於你的觀點 – darkheir

回答

0

好的,自我回答如下。

事實證明,我不得不使用活動文件字段在視圖中,使用延伸CFormModel作爲模型的類的一個實例。

解決方案:

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