如何在joomla中的自定义组件中使用com_users模型类

时间:2013-01-07 10:31:26

标签: joomla joomla2.5 joomla-extensions

我在Joomla 2.5中创建了一个自定义组件。在此组件中,我想获取com_users中提供的所有用户。为此,我想让您知道,我如何使用com_users 模型类进入我的零件。任何人都有建议如何去做。

2 个答案:

答案 0 :(得分:3)

根据您想要使用模型的位置,您可以简单地询问Joomla!为你加载它。

JController类或子类中,您可以调用getModel传递模型名称和组件前缀...

e.g。

JModel::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_users/models/');
$model = $this->getModel($name = 'User', $prefix = 'UsersModel');

如上所示,可能需要使用JModel::addIncludePath()添加要加载的外部模型的路径。

或者,如果您确定型号名称和类前缀,则可以使用JModel的{​​{1}}来创建所需的模型对象...例如。

getInstance()

或者在视图中你可以:

$model = JModel::getInstance('User', 'UsersModel');

N.B。在第一行中,我们传递了所需的模型名称,通常您在没有任何参数的情况下调用$myModel = $this->getModel('myOtherModel'); $this->setModel($myModel); 来加载组件视图控制器的默认模型。在第二行中,因为我们只是将模型传递给getModel,所以它不会使它成为视图使用的默认模型。

当我们稍后想要使用我们的模型对象时,我们可以像这样指定我们想要使用的模型:

setModel()

第一行使用视图的默认模型(因为我们在可选参数中指定了一个)。第二行使用$item = $this->get('Item'); $otherItem = $this->get('Item', 'myOtherModel' ); 中的getItem()

这一切都有效,因为myOtherModel(在 JView 中)有以下方法:

libraries/joomla/application/view.php

答案 1 :(得分:1)

尝试这样的事情

if(!class_exists('UsersModelUser')) require(JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_users'.DS.'models'.DS.'user.php');

您可以从管理员端或前端添加模型的正确路径。

VM2.x组件正在使用这种方式。

或者您只需要有关可以使用的用户的一些详细信息。

$user = JFactory::getUser();

希望这可以帮到你..