0

我需要上传文件Yii。在视图中我有 row: <?php echo CHtml::activefileField($qualificationModel, 'picture'); ?>,在哪里

$qualificationModel = 新技能映射;

控制器部分:

 $skillsModel = SkillsMapping::model();
 $skillsModel->attributes=$_POST['SkillsMapping'];
 $skillsModel->picture=CUploadedFile::getInstance($skillsModel,'picture');
 echo  var_dump($_FILES);
 if($skillsModel->validate())
 {
    if($skillsModel->save())
    {
       $skillsModel->picture->saveAs('images/qual-pics');
       $this->redirect(array('view','id'=>$model->user_id));
    }
 }

当我选择照片并单击按钮时,出现错误Picture cannot be blank. 检查 POST 请求后,我发现奇怪的事情 - 请求有两个属性 -SkillsMapping[picture]=SkillsMapping[picture]=Lighthouse.jpg. 如果在这篇文章的顶部评论回声,这两个属性都会消失。如何删除空SkillsMapping[picture]的以及为什么会这样?谢谢。

4

1 回答 1

2

您不需要删除空的隐藏字段,因为它可以帮助您,而不是伤害您(Yii 本身会自动将其放在那里;请参阅源代码的相关部分)。

隐藏字段在那里,因此$_POST当没有选择要上传的文件时填充一个空值。如果选择了文件,文件输入控件将提供其自己的 POST 值,该值会覆盖空的“保护值”。

于 2013-08-05T14:34:38.537 回答