Yii2 - 错误请求(#400) - 缺少必需参数:id

时间:2017-07-04 10:40:35

标签: php yii2 yii2-basic-app bad-request

CommentController:

public function actionCreate()
{

    $model = new Comment();

    var_dump(Yii::$app->request->post());

     if ($model->load(Yii::$app->request->post())) 
     {
        $model->user_id = Yii::$app->user->getId();
        $model->created_at = time();
        $model->updated_at = time();
        $model->save();

        return $this->redirect(Url::to(['post/view', 'id'=>$model->post_id])); 
     }

    return $this->redirect(Url::to(['/post/index'])); 
}

如果我以false传递给$model->save(),数据将存储在数据库中,外键字段'post_id'中没有值,但仍然不会将我重定向到正确的页面。

yii的新功能和相对较新的软件开发,任何帮助都将受到广泛赞赏。

2 个答案:

答案 0 :(得分:0)

它会将您重定向到post/view - 意味着PostController - actionView($id),但没有$id所需的参数actionView($id)。这就是为什么你得到400缺少param错误。您必须添加此参数 - 现在,如果您将false添加到save()方法并且保存时没有post_id - 您无法将用户重定向到post/view,因为您没有在id

中传递了此对象的GET

为了避免此类问题,您应该检查$model是否真的保存if($model->save()),以及是否将用户重定向到视图。

答案 1 :(得分:0)

你需要在你的控制器中执行如下操作。如果id存在,这将保留id值,否则它定义并保持为空。

public function actionView($id='') {
  //
}