POST中有两个相同的属性

时间:2013-08-05 14:29:04

标签: post yii filefield

我需要使用Yii上传文件。在视图中我有一行: <?php echo CHtml::activefileField($qualificationModel, 'picture'); ?>,其中

  

$ qualificationModel = new SkillsMapping;

控制器的一部分:

 $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。如果在此帖子的顶部注释了echo,则两个属性都会消失。如何删除空SkillsMapping[picture]以及为什么会这样?感谢。

1 个答案:

答案 0 :(得分:2)

你不需要删除空的隐藏字段,因为它可以帮助你,而不是伤害你(Yii本身会自动将它放在那里;参见relevant part of the source)。

隐藏字段存在,以便在未选择上传文件时,$_POST将填充空值。如果选择了文件 ,则文件输入控件将提供自己的POST值,以覆盖空的“保护值”。