2011-04-26 31 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)。我希望有人有一个更好的解决方案,但至少这个作品。

相关问题