用户编辑并保存帐户后,会发生奇怪的事情。用户保存后,用户对象中的组数组为空。
我们设置它使用户可以在多个组中,例如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->组决定自己清空。
同样可能需要注意的是,每次用户注销并重新登录时,这些组都会重置,并且不再为空。
是否有其他人遇到此问题或有任何提示?
答案 0 :(得分:0)
有同样的问题。找到一个肮脏的解决方案来解决。 您可以使用JACCESS类获取组。
$oUser = JFactory::getUser();
jimport( 'joomla.access.access' );
$groups = JAccess::getGroupsByUser($oUser->id);
var_dump($groups);