2016-01-25 81 views
1

我有一個控制器名稱CodeBridgeController並有一個模型表名稱CodeBridgeTable。 當我打電話CodeBridge表中的動作像如下:Cakephp 3默認模型未加載控制器

$this->CodeBridge->find('all')->toArray(); 

這產生Error: Call to a member function find() on a non-object File D:\php\htdocs\cake3\erp\src\Controller\CodeBridgeController.php Line: 25 我認爲這是愚蠢的事情,但我無法找到,爲什麼在這種情況下不加載表中的任何代碼錯誤。 當我這樣稱呼它的方式。

$codeBridgeTable = TableRegistry::get('CodeBridge'); $results = $codeBridgeTable->find('all')->hydrate(false)->toArray();

什麼可能產生問題,專家建議需要。

+0

使用inflector類來知道傳統上正確的控制器/表類。 http://sandbox3.dereuromark.de/sandbox/inflector –

+0

從調試'$ this-> CodeBridge'的實際開始('debug($ this-> CodeBridge)')。鑑於錯誤消息說它是一個非對象,我假設表實例自動加載機制甚至沒有達到,和/或已經有一些東西分配給'$ this-> CodeBridge'。 – ndm

回答

2

最後,我發現了問題所在。 在控制器動作,我產生像以下網址: Router::url(array('controller' =>'codebridge','action'=>'edit'));其生成URL /cake3/erp/codebridge/edit

在駱駝情況Router::url(array('controller' =>'CodeBridge','action'=>'edit'));其生成URL變化控制器名稱後「/ cake3/ERP /代碼橋/ edit`

這解決了問題

-1

要解決這個問題,只是模型加載嘗試使用它之前:

$this->loadModel("CodeBridge"); 
$this->CodeBridge->find('all')->toArray(); 
+0

這是貨物崇拜節目。當某些事情應該起作用但不起作用時,最好找出爲什麼它不起作用,而不是僅僅使用一種解決方法。遵循這些建議幾乎肯定會導致與潛在問題有關的其他問題。 –