1

ファイルアップロードフィールドを 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 がデータベースに追加する方法がわかりません

ありがとう

エイドリアン

編集:私は明らかslider_imageにそのテーブルにフィールドを持っています

4

2 に答える 2

2

Controller コードが行うことは、アップロードされたファイルのファイル名をデータベース テーブルに保存することです。もう1つのことは次のとおりです:あなたのコード:

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

間違った属性を参照しています。私はそれがあるべきだと思います:

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

$model->slider_image->save('path.to.file');最後に、ファイルをディスクに保存するために呼び出す必要があります

于 2013-09-30T14:04:36.670 に答える
0

で在庫があると思います$model->validate()。この行より上の画像をコピーするため、コピーは問題ありませんが、検証を行わないため、DB には保存されません。

var_dump($model->validate());何が起こっているかを見るために...

于 2013-09-30T11:45:33.947 に答える