помогите решить вопрос с upload при модификации

Излагаю проблему:

есть форма для загрузки данных в 5 полей. Одно поле это типа file для загрузки картинки.

В базу записывается только имя картинки и поле в таблице типа varchar.

Делаю валидацию на модели

return array(

array(‘name, title, text’, ‘required’),

array(‘name’, ‘length’, ‘max’=>50),

array(‘title’, ‘length’, ‘max’=>250),

array(‘fileName’, ‘file’, ‘types’=>‘jpg, gif, png’, ‘on’=>‘create, update’),

// The following rule is used by search().

// Please remove those attributes that should not be searched.

array(‘merchantId, name, title, text’, ‘safe’, ‘on’=>‘search’),

);

Прошу обратить внимание на валидацию fileName. Это и есть поле картинки.

При добавлении регистра никаких проблем, поле файла обязательное и проверка на расширение файла работает.

Проблемы возникают при модификации.

  1. Ведь если is not uploaded file, мне не нужно ничего проверять и мофицировать. Значит надо убирать валидацию, но если юзер действительно хочет поменять файл, то валидация должна работать. Тоесть, нужно ли мне активировать валидацию файла с контроллера, можно ли это вобще зделать, может какие другие идеи будут? Спасибо.

код контроллера:

public function actionUpdate()

{


	$model=$this->loadModel();





	// Uncomment the following line if AJAX validation is needed


	// $this->performAjaxValidation($model);





	if(isset($_POST['Merchant']))


	{


		$oldFile = $model->fileName;


		


		$file = CUploadedFile::getInstance($model,'fileName');


		


		if (is_object($file) && get_class($file)==='CUploadedFile')


		{


			$model->fileName = $file->getName();


			$_POST['Merchant']['fileName'] = $file->getName();


		}


		else


		{


			$_POST['Merchant']['fileName'] = $oldFile;


		}


		


		$model->attributes = $_POST['Merchant'];


		


		if($model->save())


		{	


			if (is_object($file))


			{


				unlink("C:\\AppServ\\www\\continea\\images\\merchants\\".$oldFile);


				$file->saveAs("C:\\AppServ\\www\\continea\\images\\merchants\\".$file->getName());


			}


			


			$this->redirect(array('view','id'=>$model->merchantId));


		}


	}





	$this->render('update',array(


		'model'=>$model,


	));


}

http://www.yiiframework.com/doc/api/CFileValidator#allowEmpty-detail , м? :)

Спасибо дружище! Проблема решена.