如何在Joomla 2.5中获取用户组名称

nsi*_*mon 9 joomla joomla2.5

我正在编写一个我在Joomla 1.7中开发的Joomla 2.5组件.我一直在使用这样的代码:

$user = JFactory::getUser();
$groups = $user->get('groups');
Run Code Online (Sandbox Code Playgroud)

$ groups数组将包含一个id列表,其中组名称为索引.Joomla 2.5似乎已经废弃了这个功能.我一直无法在不直接查询数据库的情况下找到如何获取组名.是否有任何方法可以获取用户所属的组列表而无需求助于查询数据库?

And*_*lin 8

我在下面生成的代码获取用户所属的所有组的名称,并将它们存储在由换行符分隔的变量$ groupNames中:

foreach ($user->groups as $groupId => $value){
    $db = JFactory::getDbo();
    $db->setQuery(
        'SELECT `title`' .
        ' FROM `#__usergroups`' .
        ' WHERE `id` = '. (int) $groupId
    );
    $groupNames .= $db->loadResult();
    $groupNames .= '<br/>';
}
print $groupNames;
Run Code Online (Sandbox Code Playgroud)

它在技术上查询数据库,但是通过Joomla API完成.这对我来说在Joomla 2.5上运行良好.

  • 在循环中执行任何数据库查询都不是一个好主意。 (2认同)

Tom*_*Tom 4

是的,这改变了

但你应该使用的是:

JFactory::getUser()->getAuthorisedGroups();
Run Code Online (Sandbox Code Playgroud)

要不就getUserGroups

  • 对于所有这些情况,我发现返回的数组的形式为:([0] =&gt; '1', [1] =&gt; '2')。它们不包含组名称。 (7认同)