防止控制器尝试自动加载模型

时间:2009-11-08 19:14:15

标签: php cakephp

我是Cake用户的开始,并尝试在已有的应用程序上做一些工作。在创建新控制器时遇到问题。我创建了StoreController,当我尝试调用其中的方法时,我得到下面的错误。没有表'store',但似乎它正在尝试自动加载与控制器相关的模型。如何阻止我的应用程序尝试加载此控制器的模型?

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

3 个答案:

答案 0 :(得分:5)

这样做,你也可以将它分配给一个空数组,如此

var $uses = array();

答案 1 :(得分:0)

想想我发现了......

class StoreController extends AppController {

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

答案 2 :(得分: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;
    }
?>

然后您可以使用Model :: _ schema属性。这比你要求的要多,所以我会让你自己研究_schema并验证数据库表不会处理的数据。

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