1
$app = JFactory::getApplication();
$app->setUserState('com_users.reset.user', $user->id);
$userId = $app->getUserState('com_users.reset.user');

这个

echo $userId;

什么都不会打印

echo $user->id;

将正确打印用户 ID。

我该如何设置用户状态?

我发现在 library/joomla/application/application.php 函数 getUserState 在 if (!is_null($registry)) 时失败并返回 null

public function setUserState($key, $value)
    {
        $session = JFactory::getSession();
        $registry = $session->get('registry');

        if (!is_null($registry))
        {
            return $registry->set($key, $value);
        }

        return null;
    }
4

1 回答 1

1

我找到了解决方案。我不确定是什么原因造成的。但是如果由于某种原因“注册表”会话变量不起作用,那么您可以像这样初始化它。它有效。

$session = JFactory::getSession();
$session->set('registry',   new JRegistry('session'));
于 2013-11-07T20:43:59.790 回答