-1

我正在尝试将我的 CakePHP 应用程序从升级1.3.62.2.4

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

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

在第 20 行的 C:\wamp\www\cakephp-2.2.4\app\Controller\Component\OrderBaseComponent.php 中找不到类“内容”

传递给 Component::__construct() 的参数 1 必须是 ComponentCollection 的实例,没有给出,在第 17 行的 C:\wamp\www\cakephp-2.2.4\app\Controller\Component\OrderBaseComponent.php 中调用并定义 [ CORE\Cake\Controller\Component.php,第 77 行]

4

2 回答 2

0

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

只有当它是一个你可以使用的模型时ClassRegistry::init(),否则将 sth like App::uses('Content', '[TYPE]');放在文件的顶部。

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

public function __construct(ComponentCollection $collection, $settings = array()) {
    //...
}
于 2013-01-13T12:30:27.867 回答
-1

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

第一的:

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

您可能必须在 init 或构造方法中添加类似的内容:

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

这应该可以解决第一个问题,或者对出了什么问题给出明确的解释。实际上,这段代码可能已经不是正确独立的功能。

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

第二:

第二个问题确实与迁移问题有关。检查模型是否首先扩展了 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

于 2013-01-13T11:33:58.637 回答