在codeigniter中自定义路由

时间:2011-10-07 21:23:07

标签: php codeigniter

我想将codeigniter用于我正在处理的电子商务项目,但我认为我需要一些自定义路由,但我不确定这是否可行。我希望能够使用这个网址:

http://myecommsite.com/store/mens

默认情况下,CI会调用商店类中的mens函数。我真正想要的是在商店类中调用泛型函数并将“mens”作为参数输入。原因是这个网站需要有男士,女士和儿童部分。

这可能吗?

当我进一步下线时......即

http://myecommsite.com/store/mens/category1/category2

我如何让Ci与之合作?

1 个答案:

答案 0 :(得分:3)

只需在application/config/routes.php

中定义自定义route即可

类似于您的网址http://myecommsite.com/store/mens

$route['store/(:any)'] = "store/customfunction/$1";

这样所有请求都将映射到“customfunction”方法,该方法采用参数“mens”

您可能还想要隐瞒__remap()函数,该函数会覆盖方法(而不是覆盖整个URI的路由)从手册中引用:

  

如果您的控制器包含名为__remap()的函数,它将始终使用   无论你的URI包含什么,都会被调用。它凌驾于   URI确定调用哪个函数的正常行为,   允许您定义自己的功能路由规则。

因此,您可以在控制器存储中使用__remap()函数,任何内容都将重定向到该函数。方法名称后面的任何段都作为第二个参数传递给__remap(),您可以将此数组与call_user_func_array()一起使用。
对于您的第二个URI示例,这可能会派上用场。可能是

之类的东西
function __remap('mymethod',$array = array())
{
  return call_user_func_array('mymethod',$array);
}

并在您的方法“mymethod”中选择数组元素并执行您需要做的事情