编辑用户并保存后,$ user-> groups为null

时间:2014-10-29 16:10:55

标签: php joomla3.0

用户编辑并保存帐户后,会发生奇怪的事情。用户保存后,用户对象中的组数组为空。

我们设置它使用户可以在多个组中,例如Registered和Manager(ID 2和15)。因此,当用户登录时,我们可以执行以下操作:

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

我们得到了

array (size=3)
  2 => string '2' (length=1)
  13 => string '13' (length=2)
  25 => string '25' (length=2)

然后,在用户编辑其帐户后,更改某些内容(或不更改任何内容),并保存

var_dump($user->groups);

结果

null

我试图通过创建一个插件来解决这个问题,在保存用户之后,我们进入数据库,获取用户的组,然后将它们插回到数组中。但是当我做以下事情时:

public function onUserAfterSave($juser, $isNew, $result, $error)
{
    if (JFactory::getApplication()->isSite()) {

        $user = JFactory::getUser();

        JFactory::getApplication()->enqueueMessage(json_encode($user->groups), 'message');
    }
}

显示的消息是组的JSON编码数组 - “null”,正如我所料。所以在onUserAfterSave()中,$ user->组仍然是正确的。在某些时候之后,$ user->组决定自己清空。

同样可能需要注意的是,每次用户注销并重新登录时,这些组都会重置,并且不再为空。

是否有其他人遇到此问题或有任何提示?

1 个答案:

答案 0 :(得分:0)

有同样的问题。找到一个肮脏的解决方案来解决。 您可以使用JACCESS类获取组。

$oUser   = JFactory::getUser();
jimport( 'joomla.access.access' );
$groups = JAccess::getGroupsByUser($oUser->id);
var_dump($groups);