假设用户要搜索4或5个字段,好吗?例如。他可能想用名字,电子邮件,手机甚至页码
进行搜索我希望codeigniter的网址是这样的:
site.com/Controller/Method/variable1/value1/variable2/value2/variable3/value3
或
site.com/Controller/Method/variable2/value2/variable3/value3/variable1/value1
(他们应该有相同的结果)
或采用此格式
site.com/Controller/Method/variable2/value2/variable4/value4
一些例子来澄清我的问题:
site.com/user/search/firstname/John/mobile/123/page/2
或:
site.com/user/search/lastname/Smith/email/gmail.com
在一句话中:我不想强迫用户在为参数设置值时使用特定的顺序。
答案 0 :(得分:4)
您可以在控制器上使用_remap功能。
function _remap( $method, $params )
{
$map = array();
for( $i = 1; $i < count( $params ); $i = $i + 2 )
{
$map[$params[$i-1]] = $params[$i];
}
if( $method[0] != '_' && method_exists( $this, $method ))
return $this->$method( $map );
}
如果要在所有控制器中使用它,最好编写一个自定义控制器来使用此功能扩展CI_controller,并让所有控制器扩展它。
答案 1 :(得分:0)
我将所有参数作为1个字符串传递给分隔符,例如。 /username|alunr#category|99
等,并使用php's explode()
function从那里找到值。