我有个含图片的文章,但是修改的时候就发现,获取不到图片
这是example.php是model文件
/** * this is the model class for table example. * * the followings are the available columns in table 'example': * @property integer $id * @property string $img * @property string $title * @property string $url * @property integer $state * @property string $detail */public function rules() { // note: you should only define rules for those attributes that // will receive user inputs. return array( array('img, title, state', 'required'), array('state', 'numerical', 'integeronly'=>true), array('title, url', 'length', 'max'=>150), array('img', 'file', 'allowempty'=>true, 'types'=>'bmp,jpg,png,gif'), array('detail', 'safe'), // the following rule is used by search(). // @todo please remove those attributes that should not be searched. array('id, img, title, url, state, detail', 'safe', 'on'=>'search'), ); }
这是examplecontroller.php文件
public function actionupdate($id){ $model= example::model()->findbypk($id); if($model==null){ $this->redirect(array('index')); }else{ $oldpic = $model->img; if(isset($_post['example'])){ $model->attributes=$_post['example']; $model->img = $oldpic; $fileupload = cuploadedfile::getinstance($model, 'img'); if($fileupload != null){ $filename = 'images/'.time().'.'.$fileupload->extensionname; if($fileupload->saveas($filename)){ $model->img = $filename; if(file_exists($oldpic))unlink($oldpic); } } if($model->save()){ $this->redirect(array('index')); }else{ $this->render('update',array( 'model'=>$model, )); } }else{ $this->render('update',array( 'model'=>$model, )); } } }
这是view文_form.php
beginwidget('cactiveform', array( 'id'=>'example-form', // please note: when you enable ajax validation, make sure the corresponding // controller action is handling ajax validation correctly. // there is a call to performajaxvalidation() commented in generated controller code. // see class documentation of cactiveform for details on this. 'enableajaxvalidation'=>false, 'htmloptions' => array('enctype' => 'multipart/form-data'))); ?> labelex($model,'img'); ?> $model->img)); ?>图片推荐大小为500x600 isnewrecord){ echo ''; }else{ ?>
img;%20?>>error($model,'img'); ?>
问题就是我创建成功的这个文件,要编辑除了图片的别的内容时,图片就丢失,他不保存图片
这是我创建成功的图片
我要编辑
我把标题修改了一下
然后保存结果,问题就出现了
到底哪里出问题里,我刚接触yii,我的yii版本是1.1.16,请你们修正一下!! 回复内容: 我有个含图片的文章,但是修改的时候就发现,获取不到图片
这是example.php是model文件
/** * this is the model class for table example. * * the followings are the available columns in table 'example': * @property integer $id * @property string $img * @property string $title * @property string $url * @property integer $state * @property string $detail */public function rules() { // note: you should only define rules for those attributes that // will receive user inputs. return array( array('img, title, state', 'required'), array('state', 'numerical', 'integeronly'=>true), array('title, url', 'length', 'max'=>150), array('img', 'file', 'allowempty'=>true, 'types'=>'bmp,jpg,png,gif'), array('detail', 'safe'), // the following rule is used by search(). // @todo please remove those attributes that should not be searched. array('id, img, title, url, state, detail', 'safe', 'on'=>'search'), ); }
这是examplecontroller.php文件
public function actionupdate($id){ $model= example::model()->findbypk($id); if($model==null){ $this->redirect(array('index')); }else{ $oldpic = $model->img; if(isset($_post['example'])){ $model->attributes=$_post['example']; $model->img = $oldpic; $fileupload = cuploadedfile::getinstance($model, 'img'); if($fileupload != null){ $filename = 'images/'.time().'.'.$fileupload->extensionname; if($fileupload->saveas($filename)){ $model->img = $filename; if(file_exists($oldpic))unlink($oldpic); } } if($model->save()){ $this->redirect(array('index')); }else{ $this->render('update',array( 'model'=>$model, )); } }else{ $this->render('update',array( 'model'=>$model, )); } } }
这是view文_form.php
beginwidget('cactiveform', array( 'id'=>'example-form', // please note: when you enable ajax validation, make sure the corresponding // controller action is handling ajax validation correctly. // there is a call to performajaxvalidation() commented in generated controller code. // see class documentation of cactiveform for details on this. 'enableajaxvalidation'=>false, 'htmloptions' => array('enctype' => 'multipart/form-data'))); ?> labelex($model,'img'); ?> $model->img)); ?>图片推荐大小为500x600 isnewrecord){ echo ''; }else{ ?>
img;%20?>>error($model,'img'); ?>
问题就是我创建成功的这个文件,要编辑除了图片的别的内容时,图片就丢失,他不保存图片
这是我创建成功的图片
我要编辑
我把标题修改了一下
然后保存结果,问题就出现了
到底哪里出问题里,我刚接触yii,我的yii版本是1.1.16,请你们修正一下!!
没用过1,但是翻了下代码,你的问题在rules.
array('img', 'file', 'allowempty'=>true, 'types'=>'bmp,jpg,png,gif'),
cfilevalidator 如果验证的字段不通过的话会把该字段设置成 null
/** * raises an error to inform end user about blank attribute. * sets the owner attribute to null to prevent setting arbitrary values. * @param cmodel $object the object being validated * @param string $attribute the attribute being validated */ protected function emptyattribute($object, $attribute) { if($this->safe) $object->$attribute=null; if(!$this->allowempty) { $message=$this->message!==null?$this->message : yii::t('yii','{attribute} cannot be blank.'); $this->adderror($object,$attribute,$message); } }