我正在编写一个自定义的post_controller钩子.我们知道,codeigniter uri结构是这样的:
example.com/class/function/id/
和我的代码:
function hook_acl() { global $RTR; global $CI; $controller = $RTR->class; // the class part in uri $method = $RTR->method; // the function part in uri $id = ? // how to parse this? // other codes omitted for brevity }
谢谢.
使用CodeIgniter URI核心类
通常在CodeIgniter Hooks中,我们需要加载/实例化URI核心类以到达方法.
>对于post_controller_constructor,post_controller,… hooks,我们可以获取CodeIgniter超级对象并使用uri类:
# Get the CI instance $CI =& get_instance(); # Get the third segment $CI->uri->segment(3);
>但是对于pre_controller挂钩,我们无法访问CodeIgniter超级对象所以我们必须手动加载URI核心类,如下所示:
# Load the URI core class $uri =& load_class('URI','core'); # Get the third segment $id = $uri->segment(3); // returns the id
使用纯PHP
在这种方法中,您可以使用$_SERVER数组来获取URI段:
$segments = explode('/',trim($_SERVER['REQUEST_URI'],'/')); $controller = $segments[1]; $method = $segments[2]; $id = $segments[3];