如何在组件中使用其他组件的模型?


8

我正在构建一个组件,它需要访问#__content表。组件com_content完成了该表中我的组件需要做的所有事情。如何将com_content模型导入组件中的控制器?

使用现有表代替创建自己的表是一种好习惯吗?我的组件将显示带有评论的相册,我想使用#__content表存储评论。我应该为评论创建一个新表吗?

Answers:


16

您可以com_content使用以下addIncludePath()方法将模型导入控制器:

JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_content/models', 'ContentModel');

addIncludePath()方法将在目录中JModelLegacy搜索模型。您可以将字符串或目录数组作为第一个参数。作为第二个参数,您可以为模型指定类前缀(可选)。

然后只需使用getInstance()方法:

$model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true));

第一个参数是要实例化的模型类型,第二个参数是模型类名称的前缀(可选),第三个参数是模型的配置数组(可选)。

但我不想将现有的核心组件表用于自定义组件。


谢谢!这就是我想要的。我将尽量避免使用现有的核心组件。我认为你是对的。
csbenjamin 2014年

我现在知道了,我该如何使用。例如,假设我具有函数getMsg,如何调用它? $this->msg = $this->get('Msg');
ValRob
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.