YII file upload not adding to database using form

梦想与她 提交于 2020-02-05 10:16:50

问题


Im attempting to add a file upload field to a form in YII, while its succesfully submitting and uploading the file to the correct folder, its not adding anything to the database.

Im only learning this platform so any guidance would be great.

Here is my view...

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

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

and my model

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'),
    );
}

The form itself overall is working fine, unfortunately I dont understand how YII adds to the database

Thanks

Adrian

EDIT: Ive also obviously got a slider_image field in that table


回答1:


What your Controller code would do is save the file name of the upoloaded file in your database table. Another thing is: your code:

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

is referring to the wrong attribute. I think it should be:

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

Finally, you need to call $model->slider_image->save('path.to.file'); in order to save the file to disk




回答2:


I believe you get stock at $model->validate(). Because you do copy image above this line copying is fine but you do not go through validation so it never saves to DB.

var_dump($model->validate()); to see what is going on...



来源:https://stackoverflow.com/questions/19092864/yii-file-upload-not-adding-to-database-using-form

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!