zhubangrui
- zhubangrui 回复了 性感的农民 的回答
有两个方法
1.保存
$model->pic
旧的值,有重新上传就用新的,否则用旧的值
2.没有重新上传,用unset($model->pic)
将model中的pic属性去掉(这个我没有亲测过,网友和我说yii框架就是这么处理的)。问题解决了,谢谢,是$model的原因。
- zhubangrui 回复了 性感的农民 的回答
有两个方法
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)); }
- zhubangrui 回复了 性感的农民 的回答
有两个方法
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验证就可以的。这个真让人头疼。
- zhubangrui 回复了 ttyangz 的回答
http://hi.baidu.com/ttyangz/item/cd50833c940044c21b9696fc 参考一下,顺便看看yii的wiki.你
if ($uploadedFile != null) { //不空或者不为默认的就为原来名称
//这里保存图片名称到数据库image字段
if (!empty($fileName))
$model->image = $fileName;要用empty函数做一下判断,是否传上来了图片或者名字是否为空.上传个空的当然会出错.
能告诉我一下您 是如何解决的吗?我也遇到这个问题了。谢谢
强烈期待第三讲下啊,期待,期待,期待。。
太好了,下载下来好好学习
顶起顶起。。。
太好了,顶起
新手来学习了,强烈支持