CodeIgniter动态URL路由映射变量错误:输出$id而非实际数值
问题原因与解决方案
你的问题出在路由规则的参数引用方式上,CodeIgniter的路由系统并不识别$id这种变量名作为捕获参数的引用,而是使用数字占位符(比如$1、$2)来对应路由中定义的捕获组顺序。
错误的路由配置
$route['logistics_park/(:num)']='user/logistics_park/$id';
这里的$id会被当作字符串直接传递给控制器方法,所以你才会输出"$id"而不是实际的数值。
正确的路由配置
把$id改成$1(因为(:num)是你定义的第一个捕获组):
$route['logistics_park/(:num)']='user/logistics_park/$1';
为什么这样有效?
CodeIgniter路由中,每个用括号包裹的捕获规则(比如(:num)、(:any))会按顺序被标记为$1、$2、$3...,路由解析时会把URL中匹配到的对应部分替换到这些占位符的位置,最终传递给控制器的方法参数。
你的控制器方法public function logistics_park($id)是没问题的,参数名$id可以随便命名,只要路由传递过来的是正确的数值就行。修改后再访问类似yourdomain.com/logistics_park/123的URL,控制器就会输出123了。
内容的提问来源于stack exchange,提问作者Abhiraj Tulsyan
相关产品推荐
相关产品推荐

