2009-11-08 47 views
1

我是一個初級Cake用戶,並試圖在已經存在的應用程序上做一些工作。當我創建一個新的控制器時遇到問題。我創建了StoreController,當我嘗試調用其中的方法時,我得到下面的錯誤。沒有表'商店',但它似乎試圖自動加載與控制器有關的模型。我怎樣才能防止我的應用程序嘗試加載該控制器的模型?防止控制器試圖自動加載模型

Missing Database Table 
Error: Database table stores for model Store was not found. 

回答

5

這將做到這一點,你也可以只把它分配給一個空數組像這樣

var $uses = array(); 
+0

+1 - 使用空數組是正確的方法。我記得後來空字符串方法的問題,但從那以後可能已經解決了。 – deizel 2009-11-09 14:48:23

+0

前段時間我也有一個空字符串的問題,它現在可以工作,但最好是安全而不是抱歉! – Dean 2009-11-09 22:51:39

0

想我找到它......

class StoreController extends AppController { 

// Do not preload any models, we will do this on demand to prevent waste. 
var $uses = ''; 
0

如果你有一個AppController的像這樣..

<?php 
    Class AppController extends Controller { 
     public $uses = array('GlobalModel'); 
    } 
?> 

而你使用一個空的數組......

<?php 
    Class StoresController extends AppController { 
     public $uses = array(); 
    } 
?> 

然後StoresController仍會有從AppController中

訪問GlobalModel如果使用

<?php 
    Class StoresController extends AppController { 
     public $uses = ''; 
    } 
?> 

然後StoresController將無法訪問任何車型。

當有人想要一個沒有模型的控制器時,有一段很長的時間,這是因爲他們不想將控制器與數據庫表相關聯。但作出驗證所提交的數據等更容易,你可能要考慮什麼樣的目的是

<?php 
    Class StoresController extends AppModel { 
     public $name = "Stores"; 
     public $uses = array('Store'); 
    } 
?> 

<?php 
    Class Store extends AppModel { 
     public $name = "Store"; 
     public $useTable = false; 
    } 
?> 

然後你可以使用模型:: _架構屬性。這比你要求的要多,所以我會讓你對_schema進行自己的研究,並驗證那些不會被數據庫表處理的數據。

http://book.cakephp.org/view/442/_schema