yii 1.1.16 含图片的文章无法修改
程序员文章站
2022-05-01 10:45:41
...
我有个含图片的文章,但是修改的时候就发现,获取不到图片
这是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{ ?>
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{ ?>
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);
}
}