我正在运行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
答案 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',
),
),