博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CI框架 default_controller 如何设置为:'目录/Controller' 转
阅读量:6906 次
发布时间:2019-06-27

本文共 1817 字,大约阅读时间需要 6 分钟。

闲谈

前几天,我的室友发现了一个问题: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']; // 添加这一句代码就可以了 }

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

作者:止境_af83
链接:https://www.jianshu.com/p/e6615ee734e7
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
你可能感兴趣的文章
Mysql 通过全量备份和binlog恢复整体数据
查看>>
Bulma - 基于 Flexbox 的现代化的 CSS 框架
查看>>
单点登录
查看>>
jQuery Template 简单使用
查看>>
Internet路由之路由表查找算法概述-哈希/LC-Trie树/256-way-mtrie树
查看>>
Centos网络管理(四)-路由转发与静态路由
查看>>
SHA加密算法工具类
查看>>
企业数据囤积是小事?Veritas的《数据囤积报告》告诉你千万别小看这些风险
查看>>
python链接mysql常见问题汇总
查看>>
UDP"打洞"原理
查看>>
cannot restore segment prot after reloc: Permission denied
查看>>
Cisco设备初始基本操作流程
查看>>
开发者必备的火狐插件
查看>>
Samba再报安全漏洞
查看>>
sql语句函数
查看>>
React Native也能玩区块链了
查看>>
详解linux系列之字符界面安装apache及配置
查看>>
基于zabbix用Python写一个运维流量气象图
查看>>
使用手机驾驶模式已成趋势 驾驶助手尽展NUANCE创新语音技术
查看>>
Spring从菜鸟到高手(三)依赖注入
查看>>