2012-06-13 90 views
1
主控制器

我使用HMVC CI中https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home如何設置在HMVC笨

如何設置一個控制器訪問用戶只頁面時會自動運行。 這是爲了檢查用戶當前是否登錄。我已經做了一個輔助檢查,如果用戶登錄:

<?php 
if(!defined('BASEPATH')) exit('No direct script access allowed'); 
if (!function_exists('is_logged_in')){ 
    function is_logged_in(){ 
     $CI =& get_instance(); 
     $logged_in = FALSE; 
     $user_data = $CI->session->userdata('logged_in'); 
     if(!empty($user_data)){ 
      $logged_in = TRUE; 
     } 
     return $logged_in; 
    } 
} 

但是,我唯一知道的就是調用這個方法對每個模塊的每個控制器的構造函數。我將在每個控制器上重複相同的代碼,以檢查用戶是否已登錄。基本上,我希望每次用戶嘗試訪問modules目錄內的某個內容時都會調用此函數。

回答

1

對此可以使用_remap()。如果你正在使用一個,你可以把它放在MY_Controller中,更多信息請閱讀Controller User Guide

這裏有一些你可以從頭開始。

function _remap($method) 
{ 
    if (method_exists($this, $method) && $this-my_custom_helper->is_logged_in()) 
    { 
     $this->$method(); 
    } 
    else 
    { 
     redirect('/auth/login/'); 
    } 
} 
1

一個選項是擴展主控制器類(CI_contorller我猜),並在該控制器的構造函數中調用此輔助方法。然後從這個新的控制器擴展所有其他用戶相關的控制器。