代码之家  ›  专栏  ›  技术社区  ›  Louis W

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

  •  1
  • Louis W  · 技术社区  · 16 年前

    Missing Database Table
    Error: Database table stores for model Store was not found.
    
    3 回复  |  直到 16 年前
        1
  •  5
  •   Tim Cooper    12 年前

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

    var $uses = array();
    
        2
  •  0
  •   Louis W    16 年前

    class StoreController extends AppController {
    
    // Do not preload any models, we will do this on demand to prevent waste.
    var $uses = '';
    
        3
  •  0
  •   Abba Bryant    16 年前

    如果您有这样的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表处理的数据。

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

    推荐文章