zhubangrui

zhubangrui

努力了,就离成功不远了

  • 财富值25
  • 威望值0
  • 总积分25

个人信息

  • 回复了 的回答

    有两个方法

    1.保存$model->pic旧的值,有重新上传就用新的,否则用旧的值
    2.没有重新上传,用unset($model->pic)将model中的pic属性去掉(这个我没有亲测过,网友和我说yii框架就是这么处理的)。

    问题解决了,谢谢,是$model的原因。

  • 回复了 的回答

    有两个方法

    1.保存$model->pic旧的值,有重新上传就用新的,否则用旧的值
    2.没有重新上传,用unset($model->pic)将model中的pic属性去掉(这个我没有亲测过,网友和我说yii框架就是这么处理的)。

    这是控制器中的修改代码,请您看一下啊。
    public function actionEdit(){

        $model = Proinfo::model();
        $id = Yii::app()->request->getParam('id');
        $arrinfo = $model->findByPk($id,array(
            'select'=>array(
                'id',
                'fid',
                'pro_name',
                'pro_size',
                'pro_price',
                'pro_img',
                'content',
                'content2',
                'content3',
                'istj',
            ),
        ));
        //得到下拉列表数组(array('28'=>'产品分类1'))
        $arrsel = array();
        $arrsel[] = '请选择产品分类';
        foreach($this->getselect() as $v){
            $arrsel[$v->id] = $v->cls_name;
        }
    
        //在视图中显示读取出来的数据
        $model->fid = $arrinfo->fid;
        $model->pro_name = $arrinfo->pro_name;
        $model->pro_price = $arrinfo->pro_price;
        $model->istj = $arrinfo->istj;
        $model->pro_size = explode(',',$arrinfo->pro_size);
        $model->pro_img = $arrinfo->pro_img;
        $model->content = $arrinfo->content;
        $model->content2 = $arrinfo->content2;
        $model->content3 = $arrinfo->content3;
    
        if(isset($_POST['Proinfo'])){
            $model->attributes = $_POST['Proinfo'];
    
            if(is_array($model->pro_size)){
                $prosize = rtrim(implode(',',$model->pro_size),',');
                $model->pro_size = $prosize;
            }
    
            //图片上传
            $file = CUploadedFile::getInstance($model,'pro_img');
            if(is_object($file)){
                $pre_rand = 'img_'.time().mt_rand(0,9999);
                $img_name = $pre_rand.'.'.$file->extensionName;
                $file->saveAs(UPLOAD_PATH.$img_name);
                $model->pro_img = $img_name;
            }else{
                //$model->pro_img = '1111111111';
                //unset($model->pro_img);
                $model->pro_img = $arrinfo->pro_img;;
            }
    
            $model->times = time();
            
            if($model->validate()){
                if($model->updateByPk($id,$model->attributes))
                    Yii::app()->user->setFlash('success','1');
            }
    
        }
        $this->render('edit',array('model'=>$model,'arrinfo'=>$arrinfo,'arrsel'=>$arrsel));
    }
    
  • 回复了 的回答

    有两个方法

    1.保存$model->pic旧的值,有重新上传就用新的,否则用旧的值
    2.没有重新上传,用unset($model->pic)将model中的pic属性去掉(这个我没有亲测过,网友和我说yii框架就是这么处理的)。

    这两个方法都不行啊,因为我在model页中有做了上传验证,array('pro_img','file','allowEmpty'=>true,'types'=>'jpg,jpeg,png,gif,bmp','maxSize'=>1024102410,'tooLarge'=>'图片上传的类型错误,或者上传文件大小大于10M')。如果没有进行上传,数据表中的'pro_img'就被自动设为空了。如果去掉file验证就可以的。这个真让人头疼。

  • 回复了 的回答

    http://hi.baidu.com/ttyangz/item/cd50833c940044c21b9696fc 参考一下,顺便看看yii的wiki.你

    if ($uploadedFile != null) { //不空或者不为默认的就为原来名称

    //这里保存图片名称到数据库image字段
    if (!empty($fileName))
    $model->image = $fileName;

    要用empty函数做一下判断,是否传上来了图片或者名字是否为空.上传个空的当然会出错.

    能告诉我一下您 是如何解决的吗?我也遇到这个问题了。谢谢

  • 强烈期待第三讲下啊,期待,期待,期待。。

  • 太好了,下载下来好好学习

  • 顶起顶起。。。

  • 太好了,顶起

  • 新手来学习了,强烈支持

试用期 等级规则
25/50
资料完整度
60/100
用户活跃度
0/100

Ta的关注

1

Ta的粉丝

2

Ta的访客

12