0

我正在实现一些文件上传字段,但我遇到了一些困难。我一直在关注这篇文章,一切都很完美,直到我尝试更新我的模型。如果我没有填写文件字段,则保存后将其清除。我在谷歌上搜索并找到了这个主题。我已经修改了我的代码,但是现在,当我尝试修改另一个字段时,它不会保存,除非我也修改了图像字段。问题出在哪里?我的型号代码:

    public function actionUpdate($id)
    {
        $model=$this->loadModel($id);

        // Uncomment the following line if AJAX validation is needed
        // $this->performAjaxValidation($model);

        if(isset($_POST['Company']))
        {
            $model->attributes=$_POST['Company'];
            $the_image = CUploadedFile::getInstance($model,'image');
            if (is_object($the_image) && get_class($the_image)==='CUploadedFile')
              $model->image = $the_image;
            if($model->save())
                if (is_object($the_image))
                $model->image->saveAs(Yii::getPathOfAlias('webroot') . '/upload/' . $model->image);
                $this->redirect(array('view','id'=>$model->id));
        }

        $this->render('update',array(
            'model'=>$model,
    }

这些是我模型中的规则:

            array('name', 'required'),
            array('type, number, rating, user_id', 'numerical', 'integerOnly'=>true),
            array('name, image, address, site, mail', 'length', 'max'=>1000),
            array('text', 'safe'),
            array('image', 'file', 'types'=>'jpg, gif, png'),
            array('image', 'unsafe'),
            // The following rule is used by search().
            // Please remove those attributes that should not be searched.
            array('id, type, name, text, address, site, mail, number, rating, user_id', 'safe', 'on'=>'search'),

请帮我。我不知道为什么它不起作用。

4

2 回答 2

3

尝试在更新场景中image修改属性规则,如下所示:

array('image', 'file', 'types'=>'jpg, gif, png','allowEmpty' => true, 'on'=>'update'),

我在这里找到了这个技巧,希望它对你有用。

于 2012-07-16T20:47:16.010 回答
0
public function uploadMultifile ($model,$attr,$path)
        {
            if($sfile=CUploadedFile::getInstances($model, $attr)){
              foreach ($sfile as $i=>$file){  
                 $formatName=time().$i.'.'.$file->getExtensionName();
                 $file->saveAs(Yii::app()->basePath  .DIRECTORY_SEPARATOR.'..'. $path.$formatName);
                     //  $model->image->saveAs(Yii::app()->basePath . '/../studentimage/' . $date . $model->image);
                 $ffile[$i]=$formatName;
                 }
                return ($ffile);
             }
         }

public function actionCreate()
{
    $model=new Subject;
    // $model->date_erected = date('Y-m-d');
    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    if(isset($_POST['Subject']))
    {
        $model->attributes=$_POST['Subject'];
                    if($filez=$this->uploadMultifile($model,'imagea','/../images/views/'))
                {
                    $model->documents=implode(",", $filez);
                }
        if($model->save())
            $this->redirect(array('view','id'=>$model->id));
    }

    $this->render('create',array(
        'model'=>$model,
    ));
}
于 2014-08-12T13:45:43.450 回答