2009-11-08 28 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