2011-11-08 49 views
5

我对Joomla并不十分熟悉,但我的任务是编写一个功能与问题无关的模块。从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模块获取当前控制器,并且问题是重定向?

谢谢你的任何答案。

回答

15

我称之为我的每个控制器的这种静态函数构造

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; 
     } 
    } 
+0

谢谢,这正是我一直在寻找。我会在几分钟内接受你的回答。 – Przemek

+0

thnx ...完美的作品! –