9

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

$user = JFactory::getUser();
$groups = $user->get('groups');

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

4

4 回答 4

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;

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

于 2012-11-10T19:17:44.127 回答
4

是的,这改变了

但是你应该使用的是:

JFactory::getUser()->getAuthorisedGroups();

要不就getUserGroups

于 2012-05-06T23:31:16.507 回答
1

真实片段:

            $user = JFactory::getUser();
            $db = JFactory::getDBO();

    $db->setQuery($db->getQuery(true)
        ->select('*')
        ->from("#__usergroups")
    );
    $groups=$db->loadRowList();

            $userGroups = $user->groups;
            $return=array();

          foreach ($groups as $key=>$g){
            if (array_key_exists($g[0],$userGroups)) array_push($return,$g[4]);
          }

          $groups=$return;

      /////printing groupnames for current user/////////////
         print_r($groups);
于 2012-11-22T20:53:44.333 回答
0

这里是:

<?php

    $user =& JFactory::getUser();

    foreach ($user->groups as $key => $value){
        echo $key.'<br>';
    }

?>

这会将所有用户组名称打印到屏幕上。用户组名称是数组 $user->groups 的“键”。

于 2012-09-11T13:15:29.203 回答