2011-04-26 68 views
0

我正在使用Codeigniter 2.0.1。當我打電話例如..控制器在多個目錄中出現404錯誤,

http://localhost/index.php/admin/login ./controllers/admin/login.php

它工作正常,但是當我叫下面的一個文件夾的網址admin目錄中,它拋出404錯誤。

http://localhost/index.php/admin/new_dir/dashboard ./controllers/admin/new_dir/dashboard.php

我控制器放置和正確命名。有誰知道爲什麼會發生這種情況,或者控制器只能從控制器目錄的一個目錄深處?

感謝

回答

2

不幸的是,你只能有笨的子目錄中的一個級別。只有第一個URI段被檢查爲可能的目錄。

你是否希望有一個額外的子目錄整潔或爲了您的URI的利益?如果是後者,則可以使用路由來模擬額外子目錄的行爲。

0

是的,可以在應用程序/控制器中有子文件夾。

  1. routes.php文件: $路線[ 'default_controller'] = 「DEFAULT_PAGE」;

  2. 添加* default_page.php *每個子文件夾和文件夾控制器本身,不是重定向到你需要爲默認使用該文件夾的實際控制人,如:

    類DEFAULT_PAGE擴展Public_Controller {

    public function __construct() 
        { 
         parent::__construct(); 
         redirect(Settings_model::$db_config['home_page']); 
        } 
    } 
    
  3. 副作用:您的自定義404個處理器 - 如果您有任何 - 將得到搞砸:子文件夾都沒有被捕獲,並會拋出默認error_404。我仍然在尋找一個體面的解決方案。

缺點:對於包含幾乎相同代碼的每個文件夾和子文件夾,您都有類似的文件。假設你有一個包含多個文件夾的大項目,這將變得很難維護(在這一點上最好使用HMVC)。我希望有人有一個更好的解決方案,但至少這個作品。

相關問題