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

Php 阻止控制器尝试自动加载模型,php,cakephp,Php,Cakephp,我是一个刚开始使用Cake的用户,试图在一个已经存在的应用程序上做一些工作。创建新控制器时遇到问题。我已经创建了StoreController,当我尝试调用其中的方法时,我得到下面的错误。没有“存储”表,但它似乎试图自动加载与控制器相关的模型。如何防止应用程序尝试加载此控制器的模型 Missing Database Table Error: Database table stores for model Store was not found. 我想我找到了 class StoreContro

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

Missing Database Table
Error: Database table stores for model Store was not found.
我想我找到了

class StoreController extends AppController {

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

class StoreController extends AppController {

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

这样就可以了,您也可以将它分配给一个空数组,如下所示

var $uses = array();

这样就可以了,您也可以将它分配给一个空数组,如下所示

var $uses = array();

如果您有这样的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属性。这比您要求的要多,所以我将让您自己对_模式进行研究,并验证不会由DB表处理的数据


如果您有这样的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属性。这比您要求的要多,所以我将让您自己对_模式进行研究,并验证不会由DB表处理的数据


+1-使用空数组是正确的方法。我记得前一段时间空字符串方法的问题,但从那时起可能已经解决了。我不久前也遇到过空字符串的问题,现在它可以工作了,但安全总比抱歉好+1-使用空数组是正确的方法。我记得前一段时间空字符串方法的问题,但从那时起可能已经解决了。我不久前也遇到过空字符串的问题,现在它可以工作了,但安全总比抱歉好!