我刚刚从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()
函数,所以不明白为什么我会收到此错误。
答案 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
}