涉及下划线的 Codeigniter 路由错误

霍伊特曼

我在使用 Codeigniter 路由时遇到问题,其中涉及控制器类名称中的下划线。这是我的问题以及如何复制它。

1) 克隆或下载 Codeigniter 并保存在 htdocs 中名为“test”的文件夹中

git clone https://github.com/bcit-ci/CodeIgniter.git

2)创建以下控制器并保存为C_track.php:

class C_track extends CI_Controller {
  public function index(){ echo "index done"; }
  public function demo(){ echo "demo done"; }
}

3)添加如下路由:

$route['track']= 'C_track';

4)在config.php中正确设置'base_url'(对于我的设置,它是......):

$config['base_url'] = 'http://localhost:8888/test/';  

此时,如果我去:http://localhost:8888/test/index.php/track/我看到: index done

但是,如果我访问:http://localhost:8888/test/index.php/track/demo,我会收到 404 错误。

我期待看到:演示完成

好的,现在事情变得奇怪了

5)创建以下控制器并保存为Track.php:

class Track extends CI_Controller {
  public function index(){ echo "index DONE!!!"; }
  public function demo(){ echo "demo DONE!!!"; }
}

6)不要添加新的路由!

此时,如果我去:http://localhost:8888/test/index.php/track/我看到: index done

但是,如果我去:http://localhost:8888/test/index.php/track/demo我看到:演示完成!!!

这不是我所期望的。出于某种原因,Codeigniter 正在 Track.php 中运行演示功能,即使该文件甚至没有在 routes.php 中列出。我猜下划线是问题所在。因为:

7)更改routes.php:

$route['track']= 'Track';

现在,如果我去:http://localhost:8888/test/index.php/track/我看到:index DONE!!!

但是,如果我去:http://localhost:8888/test/index.php/track/demo我看到:演示完成!!!

这正是我希望看到的!!

我怎样才能解决这个问题?我真的很想找到一种方法来解决这个问题,以便下划线按预期工作,因为我的命名方案很大程度上基于文件名和类名中的下划线。

塔伦·库马尔
$route['track']= 'C_track';

在路由中,数组键包含要匹配的 URI,而数组值包含它应该重新路由到的目的地。在上面的代码中,track在 URI 中匹配为最后一个段,即 URI 用/分隔并分解成段段描述

用于处理http://localhost:8888/test/index.php/track/demo使用

$route['track/(:any)']= 'C_track';

以上将在track后匹配 1 个具有任何类型值的段,并将其重定向到控制器“C_track”。此外,如果您将控制器更改为Track.php ,/track/demo背后的原因是因为当您将控制器重命名为Track.php 时,URI 默认与该控制器匹配,而无需在Routes中添加自定义路由。 php .

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将返回错误分配给下划线

在前缀和数字之间使用下划线时没有错误

模板错误升级到下划线1.7

下划线模板抛出变量未定义错误

jshint错误:找不到模块“下划线”

Codeigniter URI类如何使用-连字符_下划线代替?

语法错误与Visual Studio中的编译器错误,或红色波浪下划线与蓝色波浪下划线

无法从Vue路由器链接删除下划线

错误在Goland中下划线,无需说明

Rmarkdown Knit pdf-使用* italic *代替下划线显示带下划线的文本(错误的问题?)

骨干/下划线js“太多递归”和“检查目标崩溃”错误

使用Codeigniter将网址更改为破折号而不是下划线

停止Word将带有下划线的单词标记为拼写错误的单词

下划线,错误地获取价值

文字下划线检测会导致错误-为什么?

Codeigniter路由奇怪的404错误

python正则表达式错误地忽略下划线

在Symfony2中以下划线开头的路由名称

IE 11中的下划线js语法错误

创建异步任务时出现下划线错误

在 Libreoffice 中关闭拼写错误单词的红色下划线?

如何访问模板中的下划线起始属性或错误变量和属性在 Django 2.0 中可能不以下划线开头?

如何在悬停反应路由器链接时实现显示下划线的过渡效果?

Java输出下划线的逻辑错误

实现带有错误下划线的表:致命错误:调用成员函数

尝试导入错误:“_”未从“下划线”导出

泛型类型参数的下划线在 Scala 中产生编译错误?

在 BIG QUERY 中枢轴对具有空格的行数据给出错误。字段只能包含字母数字下划线以字母或下划线开头

带有活动链接的导航栏下划线错误