Caricamento file YII non aggiunto al database utilizzando il module

Sto tentando di aggiungere un field di caricamento file a un module in YII, mentre inviando e caricando il file correttamente nella cartella corretta, non aggiunge nulla al database.

Sto solo imparando questa piattaforma, quindi qualsiasi guida sarebbe grande.

Ecco la mia opinione …

<div class="row"> <div class="span4"><?php echo $form->labelEx($model,'slider_image'); ?></div> <div class="span5"><?php echo $form->fileField($model,'slider_image'); ?></div> <div class="span3"><?php echo $form->error($model,'slider_image'); ?></div> </div> 

Ecco il mio controller …

 public function actionEdit() { $id = Yii::app()->getRequest()->getQuery('id'); $model = CustomPage::model()->findByPk($id); if (!($model instanceof CustomPage)) { Yii::app()->user->setFlash('error',"Invalid Custom Page"); $this->redirect($this->createUrl("custompage/index")); } if(isset($_POST['CustomPage'])) { $model->attributes = $_POST['CustomPage']; $model->image=CUploadedFile::getInstance($model,'slider_image'); if ($model->validate()) { if ($model->deleteMe) { $model->delete(); Yii::app()->user->setFlash('info',"Custom page has been deleted"); $this->redirect($this->createUrl("custompage/index")); } else { $model->request_url = _xls_seo_url($model->title); if (!$model->save()) { Yii::app()->user->setFlash('error',print_r($model->getErrors(),true)); } else { $model->image->saveAs(Yii::app()->baseUrl.'images/'.$model->image); Yii::app()->user->setFlash('success', Yii::t('admin','Custom page updated on {time}.',arrays('{time}'=>date("d F, Y h:i:sa")))); $this->beforeAction('edit'); //In case we renamed one and we want to update menu } } } } } 

e il mio model

 public function rules() { // NOTE: you should only define rules for those attributes that // will receive user inputs. return arrays( // other rules arrays('slider_image', 'file', 'types'=>'jpg, gif, png'), ); } 

Il module stesso sta funzionando bene, sfortunatamente non capisco come YII aggiunga al database

Grazie

Adrian

EDIT: Ovviamente ho anche ottenuto un field slider_image in quel tavolo

Quello che farebbe il codice del controller è salvare il nome del file del file aggiornato nella tabella del database. Un'altra cosa è: il tuo codice:

$model->image=CUploadedFile::getInstance($model,'slider_image');

si riferisce all'attributo sbagliato. Penso che dovrebbe essere:

$model->slider_image=CUploadedFile::getInstance($model,'slider_image');

Infine, è necessario call $model->slider_image->save('path.to.file'); per salvare il file sul disco

Credo che si ottenga uno stock a $model->validate() . Poiché copi un'image al di sopra di questa linea, la copia è buona, ma non esegui la validation, quindi non salva in DB.

var_dump($model->validate()); per vedere cosa sta succedendo …