CHttpRequest及其行为没有名为" getRawBody"的方法或闭包。 (Yii v1.1.8)

时间:2014-07-30 16:18:18

标签: php http yii frameworks httprequest

我正在运行Yii v1.1.8(不是我知道的最新版本,但它是一个遗留项目)。运行以下代码时出现以下错误?

CHttpRequest and its behaviors do not have a method or closure named "getRawBody".

我正在运行的代码如下:

function actionDoSomething() {
   $requestBody = Yii::app()->request->getRawBody();
}

我可以看到RawBody()函数可以从v1.1.13获得 - 所以我认为我的版本应该没有任何问题吗?关于我为什么会收到此错误的任何想法? http://www.yiiframework.com/doc/api/1.1/CHttpRequest#getRawBody-detail

1 个答案:

答案 0 :(得分:1)

正如评论中所述,你和yii版本不能使用这种方法,所以你应该扩展CHttpRequest来添加它:

HttpRequest文件夹

中创建components文件
class HttpRequest extends CHttpRequest
{

    /**
     * Returns the raw HTTP request body.
     * @return string the request body
     * @since 1.1.13
     */
    public function getRawBody()
    {
        static $rawBody;
        if($rawBody===null)
        $rawBody=file_get_contents('php://input');
        return $rawBody;
    }
}

并在您的配置文件中指定必须使用的请求组件

'components' => array(
    'request'=>array(
        'class' => 'HttpRequest',
    ),
),