【问题标题】:CodeIgniter URI Routing is not working as expectedCodeIgniter URI 路由未按预期工作
【发布时间】:2012-10-23 02:42:25
【问题描述】:

用户指南中有这样的内容

(:num) will match a segment containing only numbers.

所以我这样做

//using wildcard
$route['tool/reply/(\d+)'] = "tool/reply/$1";
//or using regx like this
//$route['tool/reply/(:num)'] = "tool/reply/$1";

但它不仅匹配数字,它也匹配字符串。发生了什么?我错过了什么吗?

【问题讨论】:

  • 来吧,伙计们。这里真的需要一些帮助

标签: codeigniter codeigniter-2


【解决方案1】:

尝试将您的函数 tool/reply 设置为 tool/reply_numeric 之类的函数。它可能会感到困惑,只是路由到您的控制器并跳过您的路由。

【讨论】:

  • 你没明白我的意思,我的意思是通配符不起作用,它应该只匹配数字,但它也匹配字符。
  • 如果我设置 $route['tool/reply/(\d+)'] = "tool/reply/$1";然后 tool/reply/123 会匹配,tool/reply/asdf 不会匹配,但现在它都匹配了,你知道为什么吗?
  • 是的,请重新阅读我的答案。将您的函数 reply() 更改为 reply_numeric()。 CodeIgniter 很可能会忽略您的路由,因为您已经拥有定义该路由的控制器。
  • 对不起,我刚刚编辑了我的问题,请再看一遍
  • 你还没有理解我要告诉你的。 application/controller/tool.php 中的控制器正在定义 function reply($input),它接受所有输入并忽略您的路由文件定义。您需要将您的函数定义修改为reply_numeric($input),以便您的路线变成$route['tool/reply/(:num)'] = "tool/reply_numeric/$1";
猜你喜欢
  • 1970-01-01
  • 2012-10-04
  • 2014-05-02
  • 1970-01-01
  • 2016-08-19
  • 2015-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多