2012-05-20 76 views
0

我正在使用CodeIgniter,我想創建某種過濾器來知道用戶何時可能訪問當前控制器從父類創建過濾器?

如果有人有任何想法如何以不同的方式實現這一點,但很好,但我在想什麼(如果試圖這樣做)如下:

是CI_Controller - 這是基本的CodeIgniter控制器類

MY_Controller - 我使用基本控制器延伸是CI_Controller

[控制器] - 任何「物理」控制器

我所試圖做的是:

MY_Controller.php

class MY_Controller extends CI_Controller{ 

    private static $namespace = null; 

    private static $permission = array('site', 'settings'); 

    public function __construct(){ 
     if ((!isset($_SESSION['user'])) && (in_array(__CLASS__, $permission))){ 
      throw new Exception('Unauthorized'); 
     } 
     parent::__construct(); 
    } 

} 

顯然,這並不爲班主任工作永遠是MY_Controller的,而不是孩子的對象...和NAMESPACE不起作用。

任何人有任何想法?因爲Id真的很討厭開始把這段代碼放在其他課程中,而且我還需要過濾一些更復雜的東西......

回答

0

我通過以下方式解決它...只是在構造函數中,我調用物理控制器時所定義的當前類

class MY_Controller extends CI_Controller{ 
    private static $permission = array('site', 'settings'); 
    public function __construct($currentController = __CLASS__){ 
     if ((!isset($_SESSION['user'])) && (in_array($currentController , $permission))){ 
      throw new Exception('Unauthorized'); 
     } 
     parent::Controller(); 
    } 
} 

,我們只需編寫如下

class PhysicalController extends MY_Controller{ 

    public function __construct(){ 
    parent::__construct(__CLASS__); 
    } 

} 
0

由於目前還沒有答案,所以這個建議可能會有所幫助。這是一個不同的方法,但是,使用模塊化擴展 - HMVC ...

像這樣,你可以有一個模塊「登錄」與控制器,持有一些方法登錄用戶,檢查會話狀態和註銷用戶(等)。

在對方模塊,您現在可以加載模塊登錄並檢查狀態,如果需要重定向...

有一個教程HMVC: an Introduction and Application我也跟着上NETTUTS顯示瞭如何做CodeIgniter From Scratch: Day 6 – Login以這種方式。也許這有幫助。我有一些困難,因爲它是舊的代碼版本。所以也許this thread有幫助。

這不是你如何嘗試做事,但也許它有幫助!

0

我沒有嘗試,但我看到在this論壇可能會爲你工作。預測代碼:

class MY_Controller extends Controller{ 
    private static $permission = array('site', 'settings'); 
    public function __construct(){ 
     if ((!isset($_SESSION['user'])) && (in_array(__CLASS__, $permission))){ 
      throw new Exception('Unauthorized'); 
     } 
     parent::Controller(); 
    } 
} 

但隨後你需要使用的

class My_controller extends MY_Controller 

代替

class My_controller extends Controller 
+0

如果我沒有記錯的控制器是舊版本的CodeIgniter的控制器.. 。 –