错误请求 (#400) - 缺少必需的参数:YII2 中的 id
Bad Request (#400) - Missing required parameters: id in YII2
我想使用 GII 工具进行 CRUD 操作,但是当我尝试保存 post.
时收到错误消息 Missing required parameters: id
Post 控制器:
public function actionCreate()
{
$model = new Post();
if ($model->load(Yii::$app->request->post())) {
$model->post_create_time=date('Y-m-d h:m:s');
$model->save();
return $this->redirect(['view', 'id' => $model->id_post]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
为什么我总是收到这个错误?
您可以在此处尝试一些操作:
- 使用前检查
$model->post_id
是否为空
参见下面的示例
$success=$model->save();
// if it's false, it means there was an error
var_dump($success);
exit;
- 使用前检查
save()
是否成功:
见下方代码
if($model->save()){
return $this->redirect(['view', 'id' => $model->id_post]);
}else{
// show errors
var_dump($model->getErrors();
exit;
}
除此之外,我建议您 post actionView
和 class Post
的代码
尝试
public function actionCreate()
{
$model = new Post();
if ($model->load(Yii::$app->request->post())) {
$model->post_create_time=date('Y-m-d h:m:s');
$model->save(false);
return $this->redirect(['view', 'id' => $model->id_post]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
确保你这样做 $model->save(false)
看看它是否有效。
试试这个
public function actionCreate()
{
$model = new Post();
if ($model->load(Yii::$app->request->post())) {
$model->post_create_time=date('Y-m-d h:m:s');
if($model->save())
return $this->redirect(['view', 'id' => $model->id_post]);
else
{
return $this->render('create', [
'model' => $mod`enter code here`el,
]);
}
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
显然发生在 $this->redirect 上。检查 main.php 文件中的 url 规则。
它应该位于 main.php
中的某处
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
...
]
],
有些字段太短,因此无法存储,但现在会显示准确的错误消息。
我增加字段大小,没关系。
我想使用 GII 工具进行 CRUD 操作,但是当我尝试保存 post.
时收到错误消息Missing required parameters: id
Post 控制器:
public function actionCreate()
{
$model = new Post();
if ($model->load(Yii::$app->request->post())) {
$model->post_create_time=date('Y-m-d h:m:s');
$model->save();
return $this->redirect(['view', 'id' => $model->id_post]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
为什么我总是收到这个错误?
您可以在此处尝试一些操作:
- 使用前检查
$model->post_id
是否为空
参见下面的示例
$success=$model->save();
// if it's false, it means there was an error
var_dump($success);
exit;
- 使用前检查
save()
是否成功:
见下方代码
if($model->save()){
return $this->redirect(['view', 'id' => $model->id_post]);
}else{
// show errors
var_dump($model->getErrors();
exit;
}
除此之外,我建议您 post actionView
和 class Post
的代码
尝试
public function actionCreate()
{
$model = new Post();
if ($model->load(Yii::$app->request->post())) {
$model->post_create_time=date('Y-m-d h:m:s');
$model->save(false);
return $this->redirect(['view', 'id' => $model->id_post]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
确保你这样做 $model->save(false)
看看它是否有效。
试试这个
public function actionCreate()
{
$model = new Post();
if ($model->load(Yii::$app->request->post())) {
$model->post_create_time=date('Y-m-d h:m:s');
if($model->save())
return $this->redirect(['view', 'id' => $model->id_post]);
else
{
return $this->render('create', [
'model' => $mod`enter code here`el,
]);
}
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
显然发生在 $this->redirect 上。检查 main.php 文件中的 url 规则。 它应该位于 main.php
中的某处'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
...
]
],
有些字段太短,因此无法存储,但现在会显示准确的错误消息。 我增加字段大小,没关系。