Передача нескольких необязательных пар параметр / значение с заданным пользователем порядком пар - PullRequest
1 голос
/ 15 января 2012

Скажите, что пользователь будет искать в 4 или 5 полях, хорошо? например. он может захотеть выполнить поиск по имени, электронной почте, мобильному телефону или даже номеру страницы

Я хочу, чтобы 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

В одном предложении: я не хочу заставлять пользователя использовать определенный порядок при установке значения для параметров.

Ответы [ 2 ]

4 голосов
/ 15 января 2012

Вы можете использовать функцию _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 с помощью этой функции, ипусть все ваши контроллеры расширят это.

0 голосов
/ 15 января 2012

Я бы передал все параметры в виде 1 строки с разделителями, например./username|alunr#category|99 и т. Д. И найдите значения оттуда, используя php's explode() function .

...