CakePHP错误:在非对象上调用成员函数parseAccept()

时间:2014-01-30 11:49:58

标签: php cakephp cakephp-1.3

我刚刚从CakePHP 1.3升级到cakePHP 2.4.5

我收到以下错误:

Fatal Error
Error: Call to a member function parseAccept() on a non-object  
File: /myapp/lib/Cake/Controller/Component/RequestHandlerComponent.php  
Line: 157

我没有在控制器内的任何地方调用parseAccept()函数,所以不明白为什么我会收到此错误。

2 个答案:

答案 0 :(得分:5)

从蛋糕手册

  

Controller的构造函数现在有两个参数。一个CakeRequest,和   CakeResponse对象。这些对象用于填充多个对象   不推荐使用的属性,将在内部设置为$ request和$ response   控制器。


修复:

更改构造函数签名..

发件人:

function __construct()
{
    parent::__construct();
}

// Pass through the request and response objects 
// AND declare the visibility of the method
public function __construct($request = null, $response = null)
{
    parent::__construct($request, $response);
}

这应解决您的Error: Call to a member function parseAccept() on a non-object

此问题的官方Cake 2.x文档可在此处找到:

http://book.cakephp.org/2.0/en/appendices/2-0-migration-guide.html#controller

如果您刚刚从1.x升级到2.x,我强烈建议您仔细阅读cakePHP提供的详细迁移指南。

迁移指南

2.0 Migration Guide
2.1 Migration Guide
2.2 Migration Guide
2.3 Migration Guide
2.4 Migration Guide

答案 1 :(得分:3)

在Cakephp 2.x中AppController的__contruct()有两个对象。 CakeRequest和Cake Response。 您需要传递给父构造

   public function __construct($request = null, $response = null) {
        parent::__construct($request, $response);
           //you code here
    }