从Joomla模块发出重定向

5

我并不熟悉Joomla,但我被分配了写一个功能对这个问题来说无关紧要的模块。

其中一个要求是,如果加载了这个模块,它应该检查用户是否已登录,如果没有,就将其重定向到特定的URL。

经过一些搜索,我想出了以下代码,但显然它并不是一个可行的答案:

$user =& JFactory::getUser();

if (!$user->id) {
    include_once JPATH_COMPONENT . DIRECTORY_SEPARATOR . "controller.php"; // assuming com_content
    $contentController = new ContentController();
    $link = JRoute::_("my url");
    $contentController->setRedirect($link);
    return;
}

我认为问题在于如何访问控制器。创建一个新的控制器肯定不是正确的方法。有没有一种方式可以从Joomla模块中获取当前控制器,然后发出重定向?

谢谢任何回答。

1个回答

16
我在每个控制器的构造函数中调用这个静态函数。
static function forceLoggedIn(){


    $user = JFactory::getUser();

        if($user->guest||$user->id == 0)
        {
            $error = JText::_('YOU MUST BE LOGGED IN');
            //base xkè altrimenti andrebbe in loop di redirect
            JFactory::getApplication()->redirect(JURI::base(), $error, 'error' );
            return false;
        }
    }

谢谢,这正是我在寻找的。我会在几分钟内接受你的答案。 - Przemek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接