ci 控制器 目录my_router.php,CodeIgniter 让控制器可以支持多级子目录的 Router 类库...

* 自定义路由类

*

* 让CI控制器支持多级目录

*

* @author SOHOCN.NET

* @copyright Copyright © 2012 - 2018 www.sohocn.net All rights reserved.

* @created 2012-12-13

* @updated 2012-12-13

* @version 1.0*/

class MY_Router extendsCI_Router

{/**

* Set the directory name

*

* @access public

* @param string

* @return void*/

function set_directory($dir)

{$this->directory = $dir.‘/‘;

}/**

* Validates the supplied segments. Attempts to determine the path to

* the controller.

*

* @access private

* @param array

* @return array*/

function _validate_request($segments)

{if (count($segments) == 0)

{return $segments;

}//Does the requested controller exist in the root folder?

if (file_exists(APPPATH.‘controllers/‘.$segments[0].‘.php‘))

{return $segments;

}//Is the controller in a sub-folder?

if (is_dir(APPPATH.‘controllers/‘.$segments[0]))

{$temp = array(‘dir‘ => array(), ‘path‘ => APPPATH.‘controllers/‘);foreach($segments as $k => $v)

{$temp[‘path‘] .= $v.‘/‘;if(is_dir($temp[‘path‘]))

{$temp[‘dir‘][] = $v;unset($segments[$k]);

}

}$this->set_directory(implode(‘/‘, $temp[‘dir‘]));$segments = array_values($segments);unset($temp);if (count($segments) > 0)

{//Does the requested controller exist in the sub-folder?

if ( ! file_exists(APPPATH.‘controllers/‘.$this->fetch_directory().$segments[0].‘.php‘))

{if ( ! empty($this->routes[‘404_override‘]))

{$x = explode(‘/‘, $this->routes[‘404_override‘]);$this->set_directory(‘‘);$this->set_class($x[0]);$this->set_method(isset($x[1]) ? $x[1] : ‘index‘);return $x;

}else{

show_404($this->fetch_directory().$segments[0]);

}

}

}else{//Is the method being specified in the route?

if (strpos($this->default_controller, ‘/‘) !== FALSE)

{$x = explode(‘/‘, $this->default_controller);$this->set_class($x[0]);$this->set_method($x[1]);

}else{$this->set_class($this->default_controller);$this->set_method(‘index‘);

}//Does the default controller exist in the sub-folder?

if ( ! file_exists(APPPATH.‘controllers/‘.$this->fetch_directory().$this->default_controller.‘.php‘))

{$this->directory = ‘‘;return array();

}

}return $segments;

}//If we‘ve gotten this far it means that the URI does not correlate to a valid

// controller class. We will now see if there is an override

if ( ! empty($this->routes[‘404_override‘]))

{$x = explode(‘/‘, $this->routes[‘404_override‘]);$this->set_class($x[0]);$this->set_method(isset($x[1]) ? $x[1] : ‘index‘);return $x;

}//Nothing else to do at this point but show a 404

show_404($segments[0]);

}

}//END MY_Router Class

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值