Загрузка файла YII без добавления в базу данных с использованием формы

Я пытаюсь добавить поле загрузки файла в форму в YII, в то время как он успешно отправляет и загружает файл в нужную папку, не добавляя ничего в базу данных.

Я только изучаю эту платформу, чтобы любое руководство было замечательным.

Вот мое мнение …

<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> 

Вот мой контроллер …

 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}.',array('{time}'=>date("d F, Y h:i:sa")))); $this->beforeAction('edit'); //In case we renamed one and we want to update menu } } } } } 

и моя модель

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

Сама форма в целом работает нормально, к сожалению, я не понимаю, как YII добавляет в базу данных

благодаря

Адриан

EDIT: Ive также, очевидно, получил поле slider_image в этой таблице

Что ваш код контроллера будет делать, это сохранить имя файла загруженного файла в таблице базы данных. Другое дело: ваш код:

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

ссылается на неправильный атрибут. Я думаю, это должно быть:

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

Наконец, вам нужно вызвать $model->slider_image->save('path.to.file'); для сохранения файла на диск

Я считаю, что вы получаете акции в $model->validate() . Поскольку вы копируете изображение выше этой строки, копирование в порядке, но вы не проходите проверку, чтобы он никогда не сохранял DB.

var_dump($model->validate()); посмотреть, что происходит …