Php URL缩进中传递的id缺失

Php URL缩进中传递的id缺失,php,jquery,yii2,Php,Jquery,Yii2,我试图在服务器上上传文件,要查看上传的文件,我必须将模型id传递给查看操作。在我补充之前一切都很好 'options' => ['enctype'=>'multipart/form-data'] 到我的活动窗体。在我添加它之后,通过URL传递到action视图的id不再显示,我会收到缺少参数的消息。 我正在使用yii2.0.2 创建操作: public function actionCreate() { $model = new SubContent(); if

我试图在服务器上上传文件,要查看上传的文件,我必须将模型id传递给查看操作。在我补充之前一切都很好

'options' => ['enctype'=>'multipart/form-data']
到我的活动窗体。在我添加它之后,通过URL传递到action视图的id不再显示,我会收到缺少参数的消息。 我正在使用yii2.0.2

创建操作:

public function actionCreate()
{
    $model = new SubContent();

    if ($model->load(Yii::$app->request->post()) ) {
        //$fileName = $model->id;
        $model->save();
        $fileName = $model->id;

        $files =UploadedFile::getInstance($model,'files');

        $files->saveAs( 'uploads/'.$files->getBaseName().'.'.$files->getExtension());
        $model->files=$files;

        return $this->redirect(['view', 'id' => $model->id]);
    } else {
        return $this->render('create', [
            'model' => $model,
        ]);
    }
}
表格:


这是我的模型

         <?php

       namespace frontend\models;

       use Yii;

            /**
        * This is the model class for table "sub_content".
           *
         * @property integer $id
        * @property string $files
           * @property integer $sub_id
           *
          * @property Subjects $sub
           */
            class SubContent extends \yii\db\ActiveRecord
           {
           /**
            * @inheritdoc
             */
             public static function tableName()
             {
            return 'sub_content';
               }

             public function rules()
            {
               return [
              [['files', 'sub_id'], 'required'],
             [['sub_id'], 'integer'],
           [['files'], 'string', 'max' => 255]


         ];
        }

        public function attributeLabels()
          {
           return [
           'id' => 'ID',
           'files' => 'Files',
            'sub_id' => 'Sub ID',
            ];
             }

           /**
          * @return \yii\db\ActiveQuery
           */
            public function getSub()
              {
               return $this->hasOne(Subjects::className(), ['id' => 
           'sub_id']);
           }
            }

首先-由于2.0.8版无需添加
enctype
,因此在添加
文件输入
字段时会自动完成

您正在验证
$model->save()
是否返回
true
,并且该模型似乎未通过验证,因此,
$model
未保存
$model->id
未设置

你应该这样做:

public function actionCreate()
{
    $model = new SubContent();

    if ($model->load(Yii::$app->request->post()) ) {

        $model->files = UploadedFile::getInstance($model,'files');

        if ($model->save()) {
            $model->files->saveAs('uploads/' . $files->getBaseName() . '.' . $files->getExtension());

            return $this->redirect(['view', 'id' => $model->id]);
        }
    }

    return $this->render('create', ['model' => $model]);
}

要使其正常工作,您需要在
子合同
模型中设置正确的验证规则。

验证$model->save()是否返回truei gope后,我该怎么做?您可以回答我*************希望您是什么意思?一切都得到了回答。检查模型验证规则,看看您发布的数据有什么问题。好吧,我明白了,我在yii2方面不够强大,这就是为什么我不知道如何检查模型验证的原因,我很感谢您对这样更改的模型[['files'],'file','skipOnEmpty'=>true],@奥马尔·阿里仍然不工作我的朋友给我看你的错误error@UmarAli我早就知道是怎么回事了,是从
public function actionCreate()
{
    $model = new SubContent();

    if ($model->load(Yii::$app->request->post()) ) {

        $model->files = UploadedFile::getInstance($model,'files');

        if ($model->save()) {
            $model->files->saveAs('uploads/' . $files->getBaseName() . '.' . $files->getExtension());

            return $this->redirect(['view', 'id' => $model->id]);
        }
    }

    return $this->render('create', ['model' => $model]);
}