【问题标题】:CHttpRequest and its behaviors do not have a method or closure named "getRawBody" (Yii v1.1.8)CHttpRequest 及其行为没有名为“getRawBody”的方法或闭包(Yii v1.1.8)
【发布时间】:2014-07-30 16:18:17
【问题描述】:

我正在运行 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.1.13 是在 1.1.8 之后,所以你的 yii 版本中不存在该方法
  • 哎呀...我的眼睛很累...
  • 我不确定我是否可以更新版本...是否可以在需要此功能的单个控制器中本地添加此确切功能,或者通过创建扩展来扩展现有类CHTTP::Request 的类
  • 嗯,我看到两个选择:或者你更新整个框架,或者你扩展类,但真的不要只更新一个类
  • 如果你愿意,我可以作为答案发布如何扩展 CHttpRequest

标签: php http yii frameworks httprequest


【解决方案1】:

如cmets中所说,你的yii版本不能使用这个方法,所以你应该扩展CHttpRequest来添加它:

在您的components 文件夹中创建一个HttpRequest 文件

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',
    ),
),

【讨论】:

  • 我创建了一个名为 HttpRequest.php 的新文件并添加了上面的代码,我还将它添加到了我的配置中的 components 数组中。当我运行相同的页面时,我得到相同的 CHttpRequest 并且它的行为没有名为“getRawBody”错误的方法或闭包,但是当我添加行时 var_dump(get_class_methods('HttpRequest'));exit; - 我可以在数组中看到 getRawBody 函数??任何想法为什么我会收到错误
  • get_class(Yii::app()->request); 的输出是什么? ?
  • 当我回显 echo get_class(Yii::app()->request);它说'CHttpRequest'
  • 好的,所以配置没有应用,Yii 仍然尝试使用 CHttpRequest。在您的配置中,在导入中您有 components 文件夹吗? (类似于'application.components.*',)?并尝试从运行时文件夹中清除所有内容
  • 好伙伴!我们的设置有多个配置文件(不要问为什么),我将它添加到不正确的配置文件中 - 现在没有错误:) 测试 json - 我只是添加要直接输出的 json .. 对不起,如果问题听起来有点像“菜鸟”(有关更多信息,请参阅我 1 分钟内的原始帖子)。
猜你喜欢
  • 1970-01-01
  • 2014-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
  • 2014-02-28
  • 1970-01-01
相关资源
最近更新 更多