Joomla getUser()不显示更新的用户数据

Tec*_*hie 4 php session joomla joomla2.5 joomla3.0

下面的代码允许我在用户的Joomla配置文件的配置文件页面中显示用户的名字.鉴于我已经覆盖了模板以获得我想要的外观和感觉.

$user =& JFactory::getUser();

if (!$user->guest) {
  echo 'You are logged in as:<br />';
  echo 'Real name: ' . $user->name . '';
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我允许用户更新他或她的个人资料.在更新了他的名字后,数据库会正确更新,但不会在配置文件页面中显示更新的名称.

当我浏览Joomla文档时,我发现用户数据存储在会话中(JFactory :: getUser()).如果我print_r($_SESSION)可以看到用户数据对象.此外,如果我退出,则再次登录更新的名称将显示在配置文件页面上.

如何在数据更新后如何在配置文件页面中显示更新详细信息?有没有办法在Joomla会话中更新会话数据而不是手动执行?

vor*_*laz 7

您应该使用JSession为用户的当前会话设置新数据

        $user = JFactory::getUser();
        $session = JFactory::getSession();
        $session->set('user', new JUser($user->id));
        //new data for your user after the update
        $user = JFactory::getUser();
        print_r($user);
Run Code Online (Sandbox Code Playgroud)