当我尝试在 Yii (PHP) 中发送原始 json 数据时无法更新模型

问题描述 投票:0回答:1

我试图使用 Postman 发送请求来更新数据库中的字段。但是,我一直遇到以下错误:

{ "status": "error", "message": "请求方法无效或无效 数据提交。”}.

首先,我检查了我的 Postman 设置以确保

Content-Type
标头设置为
application/json
。我还检查了我的请求类型是
Post
并且我正在发送 RAW JSON 数据。

其次,我更改了函数以使用以下代码读取原始 JSON 数据:

$data = \Yii::$app->request->getBodyParams();

但是它不起作用,我仍然犯同样的错误。我尝试通过添加代码来调试

\Yii::debug($model->getDirtyAttributes(), 'dirtyAttributes');
\Yii::debug($model->attributes, 'attributesAfterLoad');

这也没有帮助,因为发送原始 JSON 数据会使全局

$_POST
数组为空。我还在终端中收到以下消息:

[2024 年 9 月 30 日星期一 12:52:26] [::1]:52291 已关闭,未发送 请求;这可能只是一个未使用的推测预连接。

这是我的方法:

public function actionUpdate($id)
{

$model = $this->findModel($id);

if (\Yii::$app->request->isPut) {
    $data = \Yii::$app->request->getBodyParams();
    
    if ($model->load($data, '') && $model->save()) {
        return [
            'status' => 'success',
            'message' => 'Model updated successfully.',
            'data' => $model,
        ];
    } else {
        return [
            'status' => 'error',
            'message' => 'Failed to update the model.',
            'errors' => $model->errors,
        ];
    }
}

return [
    'status' => 'error',
    'message' => 'Invalid request method or invalid data submission.',
];

}

php json database yii
1个回答
0
投票

答案是我必须将这些行添加到我的 config/web.php 中:

 'components' => [

        'request' => [

            'parsers' => [
                'application/json' => 'yii\web\JsonParser',
            ]

        ],

你也可以查看官方文档Class yii\web\JsonParser

© www.soinside.com 2019 - 2024. All rights reserved.