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

[HELP] 如何获取当前的控制器及方法

[复制链接]
发表于 2011-9-22 10:24:51 | 显示全部楼层 |阅读模式
本帖最后由 ekingluo 于 2011-9-22 10:26 编辑

我刚在论坛里面搜过了,以前有人提过同样的问题,回答一般都是查看uri类,也就是获取uri的segments片段,一个问题是:如果url是一般模式,uri类也可以正常解析成片段吗,这个我可以自己试试……还没试……还有一个问题是:我的控制器中有子文件夹,也有的没有,可是我要在所有的控制器中都要获取当前的控制器和方法,这样我在每个控制器中要获取的方法又不一样了。我研究的一个方法是:
$RT= & load_class('Router');
$controller=$RT->fetch_class;
$method=$RT->fetch_method;
有没有直接可以获取到的方法?不用像这样再加载router类;
我要解决的问题是一个简单的权限判断,如果用户没有访问此控制器的权限就提示无权限的,新手请赐教,我想要一个好的解决办法。
发表于 2011-9-22 10:47:40 | 显示全部楼层
本帖最后由 jeongee 于 2011-9-22 10:47 编辑

不管带不带文件夹,不管用没用到路由,不管。。。
在ci中用下面的肯定获取到的是控制器和方法名
那就是:
PHP复制代码
controller:$this->uri->rsegment(1);
method:$this->uri->rsegment(2);
 
复制代码

 楼主| 发表于 2011-9-22 10:56:56 | 显示全部楼层
jeongee 发表于 2011-9-22 10:47
不管带不带文件夹,不管用没用到路由,不管。。。
在ci中用下面的肯定获取到的是控制器和方法名
那就是:

我现在url是http://localhost/codeIgniter/index.php?d=admin&c=login&m=index;
配置:$config['enable_query_strings'] = TRUE;
无法获取$this->uri->rsegments[1],$this->uri->rsegments[2],
发表于 2011-9-22 11:00:08 | 显示全部楼层
ekingluo 发表于 2011-9-22 10:56
我现在url是http://localhost/codeIgniter/index.php?d=admin&c=login&m=index;
配置:$config['enable_ ...

这个我真没试过,从没用过这种方式的路由,用ci原因之1就是冲着URI分段的,呵呵
我马上测试以下
 楼主| 发表于 2011-9-22 11:03:51 | 显示全部楼层
jeongee 发表于 2011-9-22 11:00
这个我真没试过,从没用过这种方式的路由,用ci原因之1就是冲着URI分段的,呵呵
我马上测试以下 ...

嗯,还是感谢,我先用笨方法做了,如果有好的,以后再改
发表于 2011-9-22 11:08:01 | 显示全部楼层
ekingluo 发表于 2011-9-22 11:03
嗯,还是感谢,我先用笨方法做了,如果有好的,以后再改

初步测试
使用$config['enable_query_strings'] = TRUE;这种方式后,ci的路由等都没用了,所以这种方式下
controller = $this->input->get('c') ? $this->input->get('c') : '你设置的默认控制器' ;
method = $this->input->get('m') ? $this->input->get('m') : 'index' ;
 楼主| 发表于 2011-9-22 11:12:19 | 显示全部楼层
jeongee 发表于 2011-9-22 11:08
初步测试
使用$config['enable_query_strings'] = TRUE;这种方式后,ci的路由等都没用了,所以这种方式下 ...

谢谢,马上使用看看
发表于 2011-9-22 15:07:56 | 显示全部楼层
或者是可以透過 $this->input->get_post() 他會先取 post 後取 get 資料

http://codeigniter.org.tw/user_guide/libraries/input.html
发表于 2012-8-26 01:38:36 | 显示全部楼层
jeongee 发表于 2011-9-22 10:47
不管带不带文件夹,不管用没用到路由,不管。。。
在ci中用下面的肯定获取到的是控制器和方法名
那就是:

如果有目录了,就不行了吧
发表于 2012-8-26 09:29:49 | 显示全部楼层
absola 发表于 2012-8-26 01:38
如果有目录了,就不行了吧

可行

本版积分规则