【问题标题】:Codeigniter routing error involving underscore涉及下划线的 Codeigniter 路由错误
【发布时间】:2019-01-08 12:54:26
【问题描述】:

我在使用 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/ 我看到了:索引完成

但是,如果我去: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/ 我看到了:索引完成

但是,如果我去: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/ 我明白了:索引完成!!!

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

这正是我期望看到的!

我该如何解决这个问题?我真的很想找到一种方法来解决这个问题,以便下划线按预期工作,因为我的命名方案主要基于文件名和类名中的下划线。

【问题讨论】:

  • 使用$route['track\(:any)']= 'C_track'; 创建路由以访问一个控制器内的所有方法以获取更多详细信息show this

标签: php codeigniter routing


【解决方案1】:
$route['track']= 'C_track';

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

用于处理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中添加自定义路由。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多