首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在PHP Cake 1.1中从常规控制器访问插件模型

如何在PHP Cake 1.1中从常规控制器访问插件模型
EN

Stack Overflow用户
提问于 2010-04-29 01:10:49
回答 3查看 1.1K关注 0票数 0

希望有一个简单的问题:我有一个插件,它使用了一组表(kb_items,kb_item_tags等)。我希望能够从另一个控制器(比如我的Pages控制器)访问这些模型,因此:

代码语言:javascript
运行
复制
class PagesController extends AppController{

function knowledgebase(){
  $items = $this->KbItem->findAll(...);
}

}

我承认我违反了一些规则(因为没有将这个控制器放在知识库插件中),但在这种情况下,这是一个自定义页面,不需要成为知识库插件代码库的一部分。

如果你需要更多的细节,请告诉我。提前感谢您的帮助!

EN

回答 3

Stack Overflow用户

发布于 2010-05-04 02:29:36

我必须自己做这件事,把模型名放在'Uses‘数组中就行了。如果不需要在多个控制器操作中访问模型,还可以使用loadModel()只在需要的操作中访问它。例如,假设您只需要在给定控制器的view()操作中访问此模型:

代码语言:javascript
运行
复制
function view() {
  // load the model, making sure to add the plug-in name before the model name
  // I'm presuming here that the model name is just 'Item', and your plug-in is called 'Kb'
  $this->loadModel('Kb.Item');

  // now we can use the model like we normally would, just calling it 'Item'
  $results = $this->Item->find('all');
  }

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2010-04-30 05:39:36

不确定它在1.1中是否像这样工作,但在1.2+中,您需要在模型名称前加上插件名称和控制器的uses数组中的句号:

代码语言:javascript
运行
复制
class PagesController extends AppController
{
    var $uses = array('Page','Kb.KbItem');

    function knowledgebase()
    {
         // This now works
         $items = $this->KbItem->findAll();
    }
}
票数 1
EN

Stack Overflow用户

发布于 2010-04-29 05:29:21

只需将模型添加到控制器的$uses属性:

代码语言:javascript
运行
复制
class PagesController extends AppController
{
    var $uses = array('Page','KbItem');

    function knowledgebase()
    {
         // This now works
         $items = $this->KbItem->findAll();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2731629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档