升级时找不到cakephp模型类错误

时间:2013-01-13 09:50:45

标签: php cakephp upgrade

我正在尝试将CakePHP应用程序从1.3.6升级到2.2.4

我根据官方CakePHP升级文档完成了所有升级步骤。

但我正在努力解决这个错误:

  

未找到“内容”类   C:\瓦帕\ WWW \ cakephp的-2.2.4 \应用\控制器\元器件\ OrderBaseComponent.php   第20行

     

传递给Component :: __ construct()的参数1必须是。的实例   ComponentCollection,没有给出,调用   C:\瓦帕\ WWW \ cakephp的-2.2.4 \应用\控制器\元器件\ OrderBaseComponent.php   在第17行并定义[CORE \ Cake \ Controller \ Component.php,第77行]

2 个答案:

答案 0 :(得分:0)

对于第一个错误,请确保始终 App :: uses()您在代码中使用的每个类。 因此,在您实际使用它之前,还必须包含您的内容(无论是什么类)。

只有它是一个模型你才可以使用ClassRegistry::init(),否则就像 App::uses('Content', '[TYPE]');位于文件顶部。

这第二个错误非常明显! 查看概述的“CORE \ Cake \ Controller \ Component.php”文件,确保您的函数在自定义组件中具有完全相同的参数:

public function __construct(ComponentCollection $collection, $settings = array()) {
    //...
}

答案 1 :(得分:-1)

我们没有任何相关的源代码,但通常您可以在顶部或组件文件中添加它:

<强>首先

 App::uses('Content', 'Model');

您可能需要添加类似init或构造方法的内容:

$this->Content = ClassRegistry::init('Content');

这应解决第一个问题或明确解释出现了什么问题。实际上这段代码可能已经没有正确的独立功能。

我怀疑它取决于要在另一段代码中加载的模型,这就是为什么它可能起作用的原因。组件应该不依赖于其他代码片段,因此添加App :: uses,App :: import etc语句会使代码始终工作。例如,当您在其他项目中重复使用它时。

<强>第二

第二个问题来自于迁移问题。检查模型是否首先扩展Component类。

然后确保如果您实现自定义方法__construct()以及init(),例如您检查是否应该向父级添加调用。例如,这适用于beforeFilter控制器方法。

public function beforeFilter() {
    parent::beforeFilter();
}

来自http://book.cakephp.org/2.0/en/controllers.html#the-app-controller

的文档和代码示例

相关文件:http://book.cakephp.org/2.0/en/appendices/2-0-migration-guide.html#components

相关问题