关于动态扩展controller-使其部分支持三级目录
本帖最后由 chzyer 于 2012-5-15 22:55 编辑实际上CI的二级目录有时候不能满足需求.比如admincp.
admincp本身一般情况下需要两级目录,再加上admincp,那就是3级.但是其他可能仅仅需要两级目录便可满足需求.这样,我觉得有必要搞一个动态扩展controller的功能
我研究出一个方案
比如说/index.php/admincp/home/contact_us
可以在controller下建一个admincp-home.php的文件.
在admincp下给home提供跳转
对.当需要扩展的时候就调用expand_controller();
expand_controller()就是我们自己写的helper了
if ( ! function_exists('expand_controller')){
function expand_controller(){
$ci =& get_instance();
$controller_name = $ci->uri->rsegments;
$sub_controller_name = $ci->uri->rsegments;
$default_method = isset($ci->uri->rsegments) ? $ci->uri->rsegments : 'index';
$file_path = APPPATH."controllers/{$controller_name}-{$sub_controller_name}.php";
if ( ! file_exists($file_path)){
show_404();
}
include $file_path;
if ( ! class_exists($sub_controller_name)){
show_404();
}
$instance = new $sub_controller_name();
$instance->{$default_method}();
}
}
对于不需要扩展的还是可以沿用CI本身的结构.
不过,我只是抛砖引玉了一下,通过/index.php/admincp-home/访问还是会出现问题的.暂时的方法姑且是修改route.php
想问问楼主这用的是什么字体呢 ......................................................................... sublime text2 哈~ 本帖最后由 大道达人 于 2012-7-31 15:22 编辑
以前写过一个 无限级目录的
https://github.com/ftwbzhao/Code ... tem/core/Router.php在路由的时候下
// check sub-folder
if (is_dir(APPPATH.'controllers/'.$this->directory.$segments[0]))
{
$this->set_directory($this->directory.$segments[0],TRUE);
$segments = array_slice($segments, 1);
$this->_validate_request(&$segments,TRUE);
}
页:
[1]