2013-01-13 59 views
-1

我想我的CakePHP程序升級從1.3.62.2.4CakePHP的模型類沒有發現錯誤,同時升級

我做了所有基於官方CakePHP的升級步驟升級文檔。

但我有這個錯誤掙扎:

Class 'Content' not found in C:\wamp\www\cakephp-2.2.4\app\Controller\Component\OrderBaseComponent.php on line 20

Argument 1 passed to Component::__construct() must be an instance of ComponentCollection, none given, called in C:\wamp\www\cakephp-2.2.4\app\Controller\Component\OrderBaseComponent.php on line 17 and defined [CORE\Cake\Controller\Component.php, line 77]

+2

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

+0

你能展示一些代碼嗎?你如何加載內容類? – dhofstet

回答

-1

我們沒有任何相關的源代碼,但通常你會在頂部加入這樣或您的組件文件:

第一:

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

,你可能需要添加一些像你的初始化或構造方法:

$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

0

對於第一個錯誤請確保您始終應用 ::使用()你在使用每一個類你的代碼。 因此,在您真正使用它之前,您的內容(無論它是什麼類別)也必須包含在內。

只有在它是模型的情況下,您纔可以使用ClassRegistry::init(),否則將 App::uses('Content', '[TYPE]');置於文件的頂部。

這第二個錯誤是不言自明的! 窺視概述「CORE \蛋糕\控制器\ Component.php」文件,並確保您的函數不具有完全相同的參數在你的自定義組件:

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