美文网首页
CI框架 default_controller 如何设置为:'目

CI框架 default_controller 如何设置为:'目

作者: 止境_af83 | 来源:发表于2017-04-17 13:46 被阅读0次

闲谈

前几天,我的室友发现了一个问题:CI框架的Router.php文件的default_controller设置为application\controllers文件下的 一级PHP文件名 就可以,设置为 目录/Controller名 就 404,如目录结构:

----application
   |
   ----controllers
       |
       -----admin
       |    |
       ---------Welcome.php
       |
       ----Welcome.php

在application\config下的routes.php,配置如下

$route['default_controller'] = 'welcome';          这样就可以
$route['default_controller'] = 'admin/welcome';    这样不可以

一开始以为是哪里配置错了,但没道理啊,主要的只有这个配置。我开始怀疑是CI版本的问题,到网上一查,果然有相同问题的道友,不过没有找到确切的解决方案,也许是应为安全性的问题,3.x 版本的都不能这样设置了。

正题

博主尝试着决解这个问题。博主的CI版本为3.1.4

看了源码才知道原来 $route['default_controller'] 的值是 '类名/方法名' 而不是 '路径/类名'

打开system\core目录下的Router.php, 大概在298行

//将下面的代码注释掉
/**
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;  //默认方法

如果是 '路径/类名' ,以上的配置就够了

添加Controller默认的方法名

当然可以设置默认的方法名 , 一般是index,如果要改也是可以的
在application\config下的routes.php,添加

$route['method'] = 'index';  //默认的方法名

在system\core目录下的Router.php,大概在176行,添加

if (isset($route) && is_array($route))
    {
        isset($route['default_controller']) && $this->default_controller = $route['default_controller'];
        isset($route['translate_uri_dashes']) && $this->translate_uri_dashes = $route['translate_uri_dashes'];
        unset($route['default_controller'], $route['translate_uri_dashes']);
        $this->routes = $route;
        isset($route['method']) && $this->method = $route['method'];  // 添加这一句代码就可以了
    }

这样就可以了,希望对你有帮助。

相关文章

  • CI框架 default_controller 如何设置为:'目

    闲谈 前几天,我的室友发现了一个问题:CI框架的Router.php文件的default_controller设置...

  • CI框架结构

    CI框架简介 CI框架特点 1.单入口 htaccess? 单入口的好处? CI框架路径结构 代码选用ci-3....

  • BLE connection interval 杂谈(二)

    上一篇提到什么是CI,本篇主要讨论如何设置CI。其实上一篇已经提到,设置CI的两个主要作用,一个是throughp...

  • CI框架使用总结

    CI框架中: 1、数据的where,增加or也是可以的 2、设置config当中的log_threshold和lo...

  • ci框架

    什么是MVC mvc 是一种将应用程序的逻辑层和表示层分离开来的软件方法 使用ci的默认控制器 可以在 appli...

  • ci框架

    CodeIgniter是一个小巧但功能强大的PHP框架,当前下载包2.6M,作为一个简单而“优雅”的工具包,适合开...

  • iOS-人脸识别之CIDetector(系统框架)

    所属框架:Frameworks->coreImage ((前缀CI)) CIDetector 核心图片检测器 CI...

  • Twig和Medoo之 与CI框架有个约会

    CI框架 介绍优雅的CodeIgniter,称之为CI框架,CodeIgniter 是一个小巧但功能强大的 PHP...

  • CI框架源码研读(整体架构)

    有人说phper的深入要从研读mvc框架开始,我跳了一个常用的CI框架入手,一是因为 CI框架简单轻巧,二是...

  • nginx 配置ci运行的环境

    原因: ci框架是在Apache下进行开发的,如果要让基于ci框架开发的项目跑起来,需要对nginx进行如下配置。...

网友评论

      本文标题:CI框架 default_controller 如何设置为:'目

      本文链接:https://www.haomeiwen.com/subject/zsjtzttx.html