CI框架教程4——将默认路由放到子文件下

原创 2017年08月01日 10:57:51

        Codeigniter框架在版本3.0以前还可以将默认路由地址设置到子文件下中,在3.0以后就不可以了,本篇博文内容就是基于这一问题提出的解决方案。比如你想设置的默认路由地址application文件夹下controller文件夹下的home模块中(在路由配置文件中这样写):

    $route['default_controller'] = 'home/index';

         这样的话在Codeigniter框架3.0以后的版本中会报错,解决此问题的方法就是首先找到 system > core > router.PHP 文件中的下列代码。 ( 我的是 3.1.0版本 ) 代码如下:

    if (sscanf($this->default_controller, '%[^/]/%s', $class, $method) !== 2) {
        $method = 'index';
    }  

        将上述代码注释掉,替换为:

    //判断是否出现二级文件夹    
    $index = strripos($this->default_controller, '/');
    if ($index == false) {
        //如果没有直接取默认值即可
        $class = $this->default_controller;
    } else {
        //如果有
        //将默认添加的“文件夹/控制器”进行分割
        //目录的字符串
        $this->directory = substr($this->default_controller, 0, $index + 1);
        //类的字符串
        $class = substr($this->default_controller, $index + 1);  
    }
    //默认方法
    $method = $this->method; 

      修改完成即可访问。


或者将下方方法代码进行替换:

	protected function _set_default_controller()
	{
		if (empty($this->default_controller))
		{
			show_error('Unable to determine what should be displayed. A default route has not been specified in the routing file.');
		}

		//20170616 ZHIHUAWEI 修改
		/* 修改默认控制器支持  子目录/控制器/方法  start.... */
		$temp = explode('/', $this->default_controller);
		//如果是三个值(形如 $route['default_controller'] = "index/home/index"; )就做处理
		if (count($temp) == 3) {
			$dir = $temp[0];
			$class = $temp[1];
			$method = $temp[2];
			$this->set_directory($dir);
			if (!file_exists(APPPATH . 'controllers/' . $this->directory . ucfirst($class) . '.php')) {
				// This will trigger 404 later
				return;
			}
			$this->set_class($class);
			$this->set_method($method);
			// Assign routed segments, index starting from 1
			$this->uri->rsegments = array(
				1 => $dir,//这里uri参数加上目录名
				2 => $class,
				3 => $method
			);
			log_message('debug', 'No URI present. Default controller set.');
			return;//返回,不再往下走
		}
		/* 修改默认控制器支持  子目录/控制器/方法  end.... */

		// Is the method being specified?
		if (sscanf($this->default_controller, '%[^/]/%s', $class, $method) !== 2)
		{
			$method = 'index';
		}

		if ( ! file_exists(APPPATH.'controllers/'.$this->directory.ucfirst($class).'.php'))
		{
			// This will trigger 404 later
			return;
		}

		$this->set_class($class);
		$this->set_method($method);

		// Assign routed segments, index starting from 1
		$this->uri->rsegments = array(
			1 => $class,
			2 => $method
		);

		log_message('debug', 'No URI present. Default controller set.');
	}



版权声明:转载时请标注http://blog.csdn.net/zhihua_w

CI框架设定默认controller的问题

最近我在用CI写一个博客系统, 博客首页的URL为:localhost/www.ymblog.com/Home/IndexHome/index 我想将首页的controller直接设置为默认的co...
  • ym_diver
  • ym_diver
  • 2017年05月16日 20:59
  • 544

CI框架路由去掉index.php

apache去掉index.php 1.编辑conf/httpd.conf配置文件 #LoadModule rewrite_module modules/mod_rewrite.so 把该...
  • wqqqtv
  • wqqqtv
  • 2017年01月04日 10:12
  • 228

更改CI框架默认访问路径及去掉index.php

ci
  • ufan94
  • ufan94
  • 2017年12月01日 16:06
  • 57

ci框架路由扩展

  • 2013年02月21日 18:18
  • 3KB
  • 下载

ci框架中的url路由规则

ci框架中的url路由规则:         浏览器中输入 http://www.myshop.com/index.php/welcome/index/  回车时,默认情况下会找到   app...
  • txj236
  • txj236
  • 2014年07月31日 23:50
  • 2136

CI框架教程4——将默认路由放到子文件下

Codeigniter框架在版本3.0以前还可以将默认路由地址设置到子文件下中,在3.0以后就不可以了,本篇博文内容就是基于这一问题提出的解决方案。比如你想设置的默认路由地址application文件...
  • Zhihua_W
  • Zhihua_W
  • 2017年08月01日 10:57
  • 260

【ci框架】ci框架授课思路

----------------------------------------------------------------------------------------------------...
  • yanhui_wei
  • yanhui_wei
  • 2013年04月03日 05:25
  • 19456

CI框架源码解析九之路由类文件Router.php

本篇博文将讲述CI框架Router路由类文件,CI框架Router路由类将URI映射到对应的控制器及方法,Router类大量代码处理的是自定义路由,该类要支撑以下几个功能点: ①...
  • Zhihua_W
  • Zhihua_W
  • 2016年10月25日 10:11
  • 2943

ci框架修改默认控制器

当你的网站不存在某个URI 或者 用户直接从根目录访问的时候,CodeIgniter 会加载默认控制器。打开 application/config/routes.php 文件来设置默认控制器: $...
  • nuli888
  • nuli888
  • 2016年07月17日 12:27
  • 689

CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)

1. 超级对象中的URI CI_URI类的解析url的相关信息 直接使用$this->uri可以使用它的相关属性 system/core/URI.php文件中 部分常用属性: ...
  • qq_36373262
  • qq_36373262
  • 2017年01月04日 21:22
  • 441
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CI框架教程4——将默认路由放到子文件下
举报原因:
原因补充:

(最多只允许输入30个字)