【问题标题】:cakephp plugin model/controller cache issue with main model/controller主模型/控制器的cakephp插件模型/控制器缓存问题
【发布时间】:2012-01-16 11:50:12
【问题描述】:

我有一个带有用户模型、配置文件模型和用户控制器的插件,在这个用户模型中与配置文件模型相关联。在我的主模型文件夹(在应用程序下)中,我有用户模型和用户控制器(这里我没有与配置文件关联)。有时我收到错误消息说用户模型与配置文件模型无关。有时我也会收到错误消息 - “用户控制器中缺少操作注销”。我已经在 app/controller/userscontroller 中给出了注销操作,但该方法在 myplugin/usercontroller 中不可用。我正在使用 cakephp2.0 .. 我该如何解决这个问题? cakephp 如何为模型和控制器设置缓存?我不想完全禁用缓存。

【问题讨论】:

    标签: cakephp cakephp-2.0


    【解决方案1】:

    我也遇到过这个问题。基本上归结为 Cake 不支持具有相同类名的控制器这一事实。因此,在插件和应用级别上名为 UsersController 的控制器会导致缓存和某些组件(例如 Auth 组件)出现问题。

    Cake 3.0 将支持在 Cake 应用程序的各个级别中使用相同的类名,这需要 PHP 5.3,而 PHP 5.3 又支持命名空间,这是正确处理重复类名所需的功能。

    由于 2.0 分支刚刚结束 beta 测试,所以没有任何关于 Cake 3.0 何时发布的消息,我重构了我的插件,将插件名称添加到我的控制器、视图和模型中。

    所以UserModel 变成了PluginUserModelUsersController 变成了PluginUsersController。这有点麻烦,因为您必须更新所有使用模型名称的视图和变量。

    My original question 包含一些指向 Cake 错误跟踪器的链接,其中提出了类似的问题,如果您对某些背景感兴趣,

    【讨论】:

    • 非常感谢.. 正是,这就是我要找的.. 你是否应用了错误中给出的文件(cakephp.lighthouseapp.com/projects/42648/tickets/2378)?
    • 我做了,但似乎并没有解决问题。 cake_core_file_map 仍然充满了对控制器的冲突引用,它可能仍然会导致其他问题。这份报告cakephp.lighthouseapp.com/projects/42648/tickets/1884 详细介绍了修复并有一些开发人员的回应。重构控制器、视图和模型可能是最安全的选择。
    • 我尝试重命名文件并更改类名(以插件名称为前缀),但出现错误。你能举个例子吗?以及在这种情况下如何给出关联?
    • 您遇到了什么错误?如果您更改控制器和模型的类名,文件名(包括视图文件和目录)也应该更改以反映重命名。关联应参考PluginUser 而不仅仅是User
    • 啊,是的,因为重命名,路径会改变。所以yourdomain.com/admin/users 会变成yourdomain.com/admin/plugin_users。如果要支持旧的 URL 方案,则必须在 routes.php 中进行一些重新路由:book.cakephp.org/2.0/en/development/routing.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    相关资源
    最近更新 更多