2012-11-24 82 views
1

我在CI應用程序中使用鉤子「pre_controller hook specific」。
但是問題是鉤子在每次向任何其他控制器發出請求時都會激活,即使是不希望鉤子被激活的控制器。 只能爲一個控制器啓用鉤子嗎?就像playframework中的@Before註釋一樣。
在此先感謝。Codeigniter - 鉤子每個控制器

回答

8

你爲什麼不把那個邏輯放在控制器的構造函數中?

如果你有多個控制器你希望共享這個功能,只需在application/core/MY_Controller.php中用一個新的類擴展CI_Controller,並將功能放在那裏,然後在控制器中它們擴展那個類而不是默認的CI_Controller(你可以在MY_Controller.php中添加多個類)!

任何你放入覆蓋類MY_Controller.php的東西都會在控制器其餘部分的代碼之前執行,模擬pre_controller掛鉤。

只記得調用父類的構造以及:

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

參見手冊獲取更多信息有關擴展核心:http://ellislab.com/codeigniter/user_guide/general/core_classes.html

+0

我是怎麼想的?謝謝你,它工作。 – mosid

0

你也可以把你的代碼庫來使用,你只要需要它。我最終使用我的解決方案,因爲我可以保持我的身份驗證邏輯獨立於我的模塊。它也使更新更容易。