如何将表单请求格式更改为json格式

时间:2015-07-09 07:31:34

标签: php json forms yii

我有一个基于Yii 1.1的应用程序。我遇到了后端API的问题。情况就是这样。

我是API构建的新手,我的任务是构建项目的后端API。现在,从前端提交表单时,我的技术主管说我应该将表单请求格式更改为JSON。我对此一无所知。我尝试在下面的代码中使用file_gets_content('php://input') and json_decode,但仍无效。

        if (isset($_POST['TblTemplate'])) {
        //getting raw input of request
        var_dump($request = file_get_contents('php://input'));

        //decoding the JSON
        var_dump($input = json_decode($request, true));

        //passing input fields to model attributes
        $model->attributes = $input;

        //validating input fields (getErrors)
        if (!$model->validate()) {
            echo json_encode($model->getErrors());
        } else {
            //inserting (creating) template
            if(!$model->save()) {
                echo json_encode(['error' => 'Could not create template']);
            } else {
                echo json_encode(['success' => true]);
                exit();
            }
        }
    } else {
        $this->render('create',array(
            'model'=>$model,
        ));
    }

当我提交表单时,它给我字段是空的。我对这个API的东西很新,请帮忙。 此外,当我运行var转储或请求它输出此

string(156) "TblTemplate%5Bname%5D=Standard+Feedback+Request&TblTemplate%5Bemail%5D=gideon.a%40scopicsoftware.com&TblTemplate%5Bcontent%5D=I+am+a+new+template&yt0=Create" 

但输入上的vardump返回null。

1 个答案:

答案 0 :(得分:1)

试图让你先行一步:

//getting raw input of request
$request = file_get_contents('php://input');

$json = json_decode($request);

if ($json !== null) {
    .... code ...
} else {
    $this->render('create',array(
        'model'=>$model,
    ));
}

希望有所帮助