【问题标题】:cakephp 2 name variable in model and controllercakephp 2 模型和控制器中的名称变量
【发布时间】:2014-10-22 16:20:44
【问题描述】:

models和controllers中是否需要声明name变量?还是只是好习惯?例如:

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

class UsersController extends AppController {
    public $name = 'Users';
}

【问题讨论】:

    标签: cakephp cakephp-2.0 cakephp-2.1 cakephp-2.3


    【解决方案1】:

    当您不根据类名指定它时,Cake 会在内部执行此操作。

    然而,这会导致一个很好的陷阱:扩展模型或控制器时,名称不会再次构造。因此,您必须指定名称才能使其正常工作。这很重要,因为视图文件夹、modelClass 和模型别名等其他内容取决于名称是否正确。

    所以在你扩展一个类之前不需要它。

    在模型中处理数据时要注意:模型使用 Model::$alias 而不是 $name。原因是关联。如果 Code hasMany Programmer 但 Programmer 是您的用户模型,则使用 alias 并且别名是 Programmer,而不是 User。因此,当您执行 $this->data[$this->alias]['field'] 之类的操作时,请在模型中使用别名。

    【讨论】:

    • 你能给我一个扩展类的例子吗?我们已经将模型扩展到 AppModel,将控制器扩展到 AppController。
    【解决方案2】:

    我看到的最重要的是,cakephp在查询中使用公共名称,查询取public Variable name = 'User';字段然后带上User表的数据,将User.id指定为User_id,如果你在变量中更改公共名称“用户”;然后你会看到它是如何影响的。

    主要用于当开发人员没有正确遵循字母lan cakephp 约定时,或者在我的情况下,当单词不是单音节时,一开始不太了解如何使用cake php 的约定。然后影响您的查询和数据。要治愈那部分必须使用公共名称。

    【讨论】:

    • 谢谢你的回答,我已经思考了很久了。
    • 这完全是错误。模型为此使用 Model::$alias not $name。原因是关联。如果 Code hasMany Programmer 但程序员是您的用户模型,则使用别名并且别名是 Programmer。因此,当您执行 $this->data[$this->alias]['field'] 之类的操作时,请在模型中使用 alias
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多