我想将codeigniter用于我正在处理的电子商务项目,但我认为我需要一些自定义路由,但我不确定这是否可行。我希望能够使用这个网址:
http://myecommsite.com/store/mens
默认情况下,CI会调用商店类中的mens函数。我真正想要的是在商店类中调用泛型函数并将“mens”作为参数输入。原因是这个网站需要有男士,女士和儿童部分。
这可能吗?
当我进一步下线时......即
http://myecommsite.com/store/mens/category1/category2
我如何让Ci与之合作?
答案 0 :(得分:3)
只需在application/config/routes.php
类似于您的网址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”中选择数组元素并执行您需要做的事情