【问题标题】:CakePHP 2.0 can't access Model from its own ControllerCakePHP 2.0 无法从自己的 Controller 访问 Model
【发布时间】:2012-01-13 14:56:03
【问题描述】:

我仍在尝试从 CakePHP 1.3 迁移到 2.0

我有一个控制器用户控制器和它的模型用户。 User 类有一些常量,我可以使用 User::constant 从 UsersController 轻松访问这些常量。但是对于 CakePHP 2.0,它不起作用:我收到一条错误消息,说找不到 User 类。如果我App::Import('Model', 'User');,它会起作用。

【问题讨论】:

  • 我很好奇这是否与他们在 2.0 中内置的延迟加载有关...
  • 什么是User::constant?并且App::Import 应该是不必要的,至少让您遵守 2.0 中的约定;不能说我经历过这个
  • @Ross class User extends AppModel { const GROUP_ID_ADMIN = 1; const GROUP_ID_USER = 2;。我使用User::GROUP_ID_ADMIN 访问常量。

标签: cakephp cakephp-2.0


【解决方案1】:

这肯定与他们在 2.0 中内置的延迟加载有关! 你只需要告诉这个文件它还有其他依赖项

在您的 UserController 文件的最顶部执行此操作:

<?php
App::uses('User', 'Model');

然后一切正常

【讨论】:

    【解决方案2】:

    您可以尝试设置控制器名称(在 UsersController 中):

    var $name = 'Users';
    

    或者使用“uses”变量(在其他控制器中:

    public $uses = array('User');
    

    这样不行吗?

    【讨论】:

    • var $name = 'Users'; 已经在那里了。public $uses = array('User'); 对其他控制器没有帮助。
    • 另外,$name 属性可以在所有 2.0 类中完全省略
    【解决方案3】:

    你是这样声明模型的名称的吗?

    class User extends AppModel {
        public $name = 'User';
    }
    

    您的 UsersController 中有其他变量吗?

    【讨论】:

    • 是的,我做到了。其他变量是什么意思?
    【解决方案4】:

    我在模型中这样设置变量:

    //Person model
    public $genders = array('m' => 'male', 'f' => 'female');
    

    然后像这样从控制器中获取它们:

    //People controller
    $genders = $this->Person->genders;
    

    无需特殊代码。 (这是你在说的吗?)

    另外,我认为您不再需要在任何地方设置 $name 变量 - 我认为这仅适用于 PHP 4。(在那部分不是 100%,但是...我从来没有设置过了,我的 Cake2 应用程序运行良好)

    【讨论】:

    • $genders = $this-&gt;Person-&gt;genders; 在我的情况下也适用。但我无法使用 User::foo 从模型中访问静态数据成员或方法。
    • 我不确定我是否理解 - 你是说它有效,但你想以不同的方式做到这一点?
    • 如果我像建议的那样写App::uses('User', 'Model');,它会起作用。我只是想知道为什么其他人没有遇到这个问题。
    • 或者你的意思是为什么我想要User::foo而不是$this-&gt;User-&gt;foo
    【解决方案5】:

    你必须像这样加载模型:

    $this->loadModel('User');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      相关资源
      最近更新 更多