用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5890|回复: 5
收起左侧

[控制器] controller跨越上级目录生效

[复制链接]
发表于 2011-11-9 03:26:23 | 显示全部楼层 |阅读模式
本帖最后由 五点晨曦 于 2011-11-9 03:32 编辑

这个不知道算不算bug,没有灾难性影响,但是感觉不太舒服
我的controllers目录的结构如下

controllers/
        member/
                login.php
                .....
        admin/
                login.php
                .....

我的routes配置:
$route['default_controller'] = "member/login";

测试默认控制器
访问 http://localhost 调用 member/login 控制器 正常
访问 http://localhost/index.php 调用 member/login 控制器 正常
访问 http://localhost/index.php/member 调用 member/login 控制器 正常
访问 http://localhost/index.php/member/login 调用 member/login 控制器 正常

访问 http://localhost/index.php/admin  调用 member/login 控制器 傻眼了!!

关于这个问题手册在控制器一章有讲过,但没提及到这种情况
CI只要没有找到对应的controller,就会自己调用配置文件指定的默认controller(member/login),这个过程没有考虑controller所在的目录层级。

解决方法:apache的url重写,或者CI自带的uri路由,在routes.php中加入一行,设置admin目录的默认控制器
$route['admin'] = "admin/login";

之后访问 http://localhost/index.php/admin 调用admin/login 控制器 正常了

发表于 2011-11-9 07:50:14 | 显示全部楼层
还真没注意过这块{:soso_e128:}
发表于 2011-11-9 19:13:52 | 显示全部楼层
我也看不太明白呢
京东优惠券
茵曼
凡客优惠券
骆驼鞋
发表于 2011-11-10 16:19:13 | 显示全部楼层
,不错不错,没注意这额
发表于 2012-7-11 23:30:27 | 显示全部楼层
本帖最后由 小布丁 于 2012-7-11 23:40 编辑

我在controllers目录中建了一个user目录
在router中怎配置他的默认控制器是index.php呢?

我的目录结构controllers
          user
               index.php
               login.php

现在如果把默认控制器设为login.php的话
$route['user'] = "user/login";是正常的

如果想把默认控制器设为index.php的话
$route['user'] = "user/index";
就不对啦
求大拿帮忙解决下
发表于 2013-3-19 16:01:23 | 显示全部楼层
index改为home应该可以,最好不要用index命名控制器。

本版积分规则