1

ユーザーが 4 つまたは 5 つのフィールドを検索するとします。例えば。ファーストネーム、メールアドレス、携帯電話、さらにはページ番号で検索したいと思うかもしれません

codeigniter の URL を次のようにしたい:

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()functionを使用してそこから値を見つけます。

于 2012-01-15T16:22:00.607 に答える