1

假设用户要搜索 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

一句话:我不想强迫用户在给参数设置值时使用特定的顺序。

4

2 回答 2

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 这个函数,并让你的所有控制器扩展它。

于 2012-01-15T15:46:26.907 回答
0

我会将所有参数作为带有分隔符的 1 个字符串传递,例如。/username|alunr#category|99等等,并使用php 的explode()函数从那里找到值。

于 2012-01-15T16:22:00.607 回答