Здравствуйте, уважаемые форумчане.
Я относительно недолго работаю с Yii и меня возникли некоторые вопросы в некоторых простых вещах.
Я сейчас реализую загрузку картинки.
Я добавляю новость и даю возможность загрузить одну картинку к ней.
С добавлением все нормально, картинка загружается в паку нужную, в базу имя файла записывается.
С удалением тоже все хорошо, картинка тоже удаляется. Но возникла трудность с апдейтом.
Получается в апдейте мне не обязательно загружать картинку, но если этого не делать то форма ругается что поле Image не должно быть пустым, хоть в правилах указано:
public function rules()
{
return array(
array('image', 'file', 'types'=>'jpg, gif, png'),
array('title, description, status', 'required'),
array('status', 'numerical', 'integerOnly'=>true),
array('title', 'length', 'max'=>255),
array('id, title, description, status', 'safe', 'on'=>'search'),
);
}
И потом, после апдейта, новая картинка загружается, но старая не удаляется и в базу пишется пустое значение.
Вот код апдейта:
public function actionUpdate($id)
{
$model=$this->loadModel($id);
if(isset($_POST['News']))
{
$model->attributes=$_POST['News'];
if($model->save())
{
$image = CUploadedFile::getInstance($model,'image');
if ($image)
{
$newPath = dirname(Yii::app()->basePath).'/images/'.$model->id.'-'.$image->name;
$oldfilename = dirname(Yii::app()->basePath).'/images/'.$model->id.'-'.$model->image;
if (file_exists($oldfilename))
unlink($oldfilename);
$image->saveAs($newPath);
}
$this->redirect(array('view','id'=>$model->id));
}
}
$this->render('update',array(
'model'=>$model,
));
}
Заранее спасибо.