3
A
回答
8
這個你最好的選擇是明確地把它們寫入到一個新的配置文件。
$config['controllers'] = array(
'blog',
'events',
'news', // etc.
);
否則,您將掃描將耗盡資源的目錄。但是你可以做這樣的:
$controllers = array();
$this->load->helper('file');
// Scan files in the /application/controllers directory
// Set the second param to TRUE or remove it if you
// don't have controllers in sub directories
$files = get_dir_file_info(APPPATH.'controllers', FALSE);
// Loop through file names removing .php extension
foreach (array_keys($files) as $file)
{
$controllers[] = str_replace(EXT, '', $file);
}
print_r($controllers); // Array with all our controllers
由於文件名匹配控制器的名字,現在你應該有你的控制器的陣列。儘管有幾個原因,但這並不完美,但應該適用於大多數設置。
就我個人而言,我使用高度修改的目錄結構,所以這不適用於我,還有一些控制器我也想忽略。另一個選擇是將結果緩存到文件中,但這是一個單獨的教程。
我強烈建議在配置文件中定義它們,這樣您就可以存儲與您的訪問控制直接相關的其他有用信息,並避免遞歸掃描目錄的巨大開銷。
0
另一種方法是你可能做到這一點是通過創建一個接口,然後你可以驗證系統內檢查,例如,創建一個類,像這樣:
interface IAuthorizationRequired
{
public function __auth();
}
現在創建您的控制器(僞)
class BlogController extends CI_Controller implements IAuthorizationRequired
{
public function __auth()
{
/*Redirect or Custom*/
}
}
和您的授權模塊中,你加載電流控制器,並執行follewing:
if(($controller instanceof IAuthorizationRequired) && method_exists(array($controller,'__auth')))
{
$authed = $controller->__auth();
if(!$authed)
{
echo 'Authorization Failed';
exit;
}
}
在2.0之內,您可以重寫基本控制器,併爲其添加方法__auth,然後只檢查接口並運行身份驗證。
相關問題
- 1. PHP CodeIgniter:如何以編程方式檢索所有控制器的名稱?
- 2. codeigniter如何在所有控制器中傳遞登錄會話
- 3. 所選控制器和選定功能名稱的SSL [CodeIgniter]
- 4. 根據在codeigniter中選擇的控制器名稱顯示所有方法的名稱
- 5. 如何從控制器獲取所有動作名稱
- 6. 在CodeIgniter中從URL中刪除控制器名稱
- 7. Codeigniter控制器名稱和對象名稱衝突
- 8. 如何在codeigniter中刪除文件夾名稱控制器名稱和方法名稱
- 9. 如何從Codeigniter上傳控制器獲取圖像名稱?
- 10. 如何在Apache Ignite 2.1中的一個緩存中列出所有緩存名稱和所有列名稱?
- 11. 如何在另一個類中獲取控制器名稱?
- 12. Codeigniter在幫助程序中獲取控制器名稱
- 13. Codeigniter - 在Slug中不顯示控制器名稱的URL路由
- 14. 如何獲取Codeigniter項目中所有控制器的數組?
- 15. 如何列出在ipython會話中加載的所有名稱?
- 16. 如何在笨得到控制器名稱到控制器
- 17. 如何在Codeigniter中構造控制器?
- 18. 列出所有列元素名稱
- 19. Wpf:列出應用程序中的所有控件名稱
- 20. 從codeigniter中的url中刪除控制器名稱與路由
- 21. 如何找出控制器中的令牌名稱?
- 22. 如何列出grails插件的所有控制器/服務
- 23. 如何以編程方式列出Rails的所有控制器
- 24. 從codeigniter 2中刪除控制器名稱url路徑
- 25. 列出VS2008項目中所有類的名稱
- 26. 如何使變量在Codeigniter中的所有控制器中都可訪問?
- 27. 如何更改angularjs控制器名稱
- 28. Rails 3,從模型中獲取所有控制器名稱的列表?
- 29. 在Bootstrap中獲取控制器名稱
- 30. 在MVC中刪除控制器名稱