Update Bez Upload

Mam problem z ustawieniem pola foto(fieldForm) przy update. Chce, aby podczas aktualizowania danych nie było wymagane abym po raz kolejny wrzucał zdjęcie. Co mogę z tym zrobić ??

Controller:


public function actionUpdate($id)

	{

		$model=$this->loadModel($id);


		// Uncomment the following line if AJAX validation is needed

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


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

		{

                        $path =Yii::app()->baseUrl.'/../../uploads/';

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

                        $model->fullname = $model->firstname.' '.$model->lastname;

                        

                        $model->start_time = $model->start_hour.':'.$model->start_min;

                        $model->end_time = $model->end_hour.':'.$model->end_min;

                        

                        if(isset($_POST['Pupil']['foto']))

                        {

                        $rnd = rand(0,999999);

                        $length = 10;

                        $chars = array_merge(range(0,9), range('a','z'), range('A','Z'));

                        shuffle($chars);

                        $randomChar = implode(array_slice($chars, 0, $length));

                        $uploadedFile=CUploadedFile::getInstance($model,'foto');

                        $fileName = "{$randomChar}-{$rnd}-{$randomChar}-{$uploadedFile}";  // random number + file name

                        $model->foto = $fileName; 

                        

			if($model->save())

                                $uploadedFile->saveAs(Yii::app()->basePath.'/../../uploads/'.$fileName);

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

                        }

                        else {

                            //Co powinienem zmienic ?

                            if($model->save())

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

                        }

		}


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

			'model'=>$model,

		));

	}

Model:


public function rules()

	{

		

		return array(

			array('contract_contractId', 'required'),

                        array('foto','file','types'=>'jpg,png,pdf,doc,dot,docx,docm,dotx,xls,xlsm,xltm,ppt,pptm,ppsx,xlsx','allowEmpty'=>true),

			array('start_hour, start_min, end_hour, end_min, birth_date, start_time, end_time, foto', 'safe'),

                        array('foto','file','allowEmpty'=>true,'on'=>'update'),

                       

			

		);

	}

Wciąż nic ;/ Czego bym nie spróbował strona się wywala. Jedyne co wymyśliłem to na fotografie zrobić oddzielną tabelę i pobierać do wyświetlania po id.

Hej. Ja ustawiam w taki sposób:




public function rules()

{

	return array(

// ...

		array('file', 'file', 'allowEmpty' => false,  'maxSize'=>50000000, 'types'=> 'jpg,png,jpeg,bmp', 'on'=>'create'),

		array('file', 'file','allowEmpty' =>true,  'maxSize'=>50000000, 'types'=> 'jpg,png,jpeg,bmp', 'on'=>'update'),

// ...

	);

}



Problem nie polega raczej na ustawieniu rules w modelu. Błąd leży w kontrolerze i ustawieniach przy zapisywaniu. Tutaj bym prosił o pomoc.

W tym momencie wygląda to tak, że jeżeli robie update to strona się nie wywala, ale zdjęcie zostaje podmienione na pustostan -.-


  if(isset($_POST['Pupil']['foto']))

Jest niepotrzebne… zawsze masz ustawione (isset()==true), więc zawsze będziesz nadpisywał.

Sprawdzaj, czy puste.

Zamiast tego proponuje uniqid.

Dzięki na info, spróbuję to wykorzystać.