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的新功能和相对较新的软件开发,任何帮助都将受到广泛赞赏。
答案 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='') {
//
}