我在codeigniter的URI路由功能方面遇到了一个奇怪的问题......特别是围绕使用通配符。
我正在尝试将以下网址发送到我的“位置”控制器,调用我的“编辑”方法:
http://foo.bar/stores/4fdbc15b8e08233c6d9f7d91/locations/4fdbc2ed8e08233c6d9f7d93/edit
我的路线配置文件中有以下设置:
$route['stores/(:any)/locations/(:any)/edit'] = 'locations/edit';
但是......当我尝试访问上述网址时,网站就会死亡。
我试图使用正则表达式,但不幸的是正则表达式不是我的强项,因此它也无效。
我已经查看了其他stackoverflow示例和其他网站,但没有真正说明我所拥有的奇怪的URL结构。任何建议/决议将不胜感激。提前感谢您的帮助!
答案 0 :(得分:0)
假设您的请求中的字符串uri是可变长度的,您可以尝试这样的事情:
$route['stores/([a-z0-9]*)/locations/([a-z0-9]*)/edit'] = 'locations/edit';
但是你没有说明正则表达式匹配的字符串要做什么。如果您只是将它们添加到最后,您的路线将如下所示:
$route['stores/([a-z0-9]*)/locations/([a-z0-9]*)/edit'] = 'locations/edit/$1/$2';
在这种情况下,在您的控制器方法中,您可以使用$this->uri_segment()函数来解析字符串。
$firstHash = $this->uri_segment(3);
$secondHash = $this->uri_segment(4);
答案 1 :(得分:0)
这是一种做你想做的事情的简单技巧
$route['stores/(:any)'] = 'locations/edit';
然后,使用 uri_segment(n)获取编辑控制器功能中的值。
简单?