0

我对 codeigniter 的 URI Routes 功能有一个奇怪的问题......特别是围绕通配符的使用。

我正在尝试将以下 URL 路由到我的“位置”控制器,调用我的“编辑”方法:

http://foo.bar/stores/4fdbc15b8e08233c6d9f7d91/locations/4fdbc2ed8e08233c6d9f7d93/edit

我的路线配置文件中有以下设置:

$route['stores/(:any)/locations/(:any)/edit'] = 'locations/edit';

但是...当我尝试指向上述 URL 的路径时,该站点就死了。

我曾尝试使用正则表达式,但不幸的是正则表达式不是我的强项,因此它也不起作用。

我查看了其他 stackoverflow 示例和其他站点,但没有什么能真正说明我拥有的奇怪 URL 结构。任何建议/决议将不胜感激。提前感谢您的帮助!

4

2 回答 2

0

这是一个简单的技术来做你想做的事

$route['stores/(:any)'] = 'locations/edit';

然后,使用uri_segment(n)在编辑控制器函数中获取值。

简单的?

于 2012-06-28T05:51:53.243 回答
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);
于 2012-06-27T16:25:16.557 回答