URL-адрес для кодирования URL-адреса с параметрами получения

У меня возникли проблемы с настройкой разбиения на страницы на codeigniter, когда я передаю параметры в URL-адресе

если мой url выглядит так: search/?type=groups

что должно быть моим $config['base_url'] для разбивки на страницы?

если я установил базовый url для search/?type=groups то полученный URL-адрес будет search/?type=groups/10

что означает $_GET['type']=groups/10

Спасибо

В pagination config:

 if (count($_GET) > 0) $config['suffix'] = '?' . http_build_query($_GET, '', "&"); 

Ваши текущие $_GET вары будут показаны в ссылках на страницы. Вы можете заменить $_GET на другой ассоциативный массив. Это не добавит строку запроса, если она уже не существует.

Обновление: я только что видел, если вы вернетесь из другого номера страницы, чтобы щелкнуть по первому (1), CI больше не заботится о вашей конфигурации суффикса.

Чтобы исправить это, используйте $config['first_url'] .

например: $config['first_url'] = $config['base_url'].'?'.http_build_query($_GET);

если вы используете codeigniter 2, есть опция в config.php , $config['allow_get_array'] – убедитесь, что на TRUE.

Затем установите для параметра $config['page_query_string'] значение TRUE .

И, наконец, в вашем случае установите $config['base_url'] в "search/?type=groups" , после этого per_page будет добавлять per_page запроса per_page .

Он должен работать таким образом, вы получите смещение в $this->input->get("per_page") .

код сильный!

Вот мое решение jquery:

Просто оберните ссылки на страницы в div следующим образом:

 $config['full_tag_open'] = '<div id="pagination">'; $config['full_tag_close'] = '</div>'; 

чем добавить следующий код jquery:

 $("#pagination > a").each(function() { var g = window.location.href.slice(window.location.href.indexOf('?')); var href = $(this).attr('href'); $(this).attr('href', href+g); }); 

Прекрасно работает для меня.

Самый последний ответ на этот вопрос:

Вы должны включить повторное использование строки запроса, включив эту конфигурацию:

 $config['reuse_query_string'] = true; 

после этого вы должны инициализировать разбивку на страницы:

 $this->pagination->initialize($config); 

Добавлена $config['reuse_query_string'] чтобы разрешить автоматическое повторное $config['reuse_query_string'] аргументов строки запроса в сочетании с обычными сегментами URI. – CodeIgniter 3.0.0 Журнал изменений

Сегодня я боролся с тем же вопросом. Мое решение таково:

  1. Создайте ссылки на страницы и сохраните их в строке ( $pagination = $this->pagination->create_links(); )

  2. Используйте regexp для поиска всех ссылок и добавления строк запроса

Используемый код регулярного выражения:

 <?php $query = '?myvar=myvalue'; $regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>"; $unique = array(); if( preg_match_all("/$regexp/siU", $pagination, $matches) ) { foreach ( $matches[2] as $link ) { if ( !isset($unique[$link]) ) { $data['pagination'] = str_replace($link . '"', $link . $query . '"', $data['pagination']); $unique[$link] = ''; } } } unset($unique); 

Работает как прелесть для меня! Что он делает:

  1. Найти все сообщения
  2. Замените уникальные ссылки (так как есть предыдущие / следующие ссылки, одна и та же ссылка может появляться более одного раза) с исходной ссылкой и строкой запроса.

Затем просто назначьте переменную шаблону, который будет показан, и используйте print $ your_pagination_variable_name; чтобы показать ссылки с вашими строками запроса!

Решение состоит в том, что CodeIgniter не работает так. мне нужен метод (в контроллере) для каждого из вариантов в «типе», поэтому одним из вариантов был бы метод, называемый: groups, другой – именами и т. д. и т. д. каждый метод ссылается на другой класс модели или метод по мере необходимости.

Я пытаюсь лучше понять ООП и CI … немного подстраиваться, чтобы … не стесняйтесь комментировать и исправлять меня, если я ошибаюсь. Спасибо

Использование $ config ['suffix'] – лучший способ реализации IMO, потому что он не требует дополнительной обработки в качестве решения регулярного выражения. $ config ['suffix'] используется при рендеринге URL-адресов в функции create_links, которая является частью файла system / libraries / Pagination.php, поэтому, если вы установите значение, которое оно будет использоваться при генерации URL-адресов и выиграет 't требуется больше обработки, что означает, что она будет быстрее.

Спасибо за сообщение, это спасло мне много лишнего, не нужно, кодирования!

Я думаю, вы пытаетесь сделать то же самое, что я пытался сделать, и я получил его для правильной работы, не устанавливая базовый url, и просто используя эту настройку, мне не пришлось вручную редактировать библиотеку

 $this->load->library('pagination'); $config['use_page_numbers'] = TRUE; $config['page_query_string'] = TRUE; $config['total_rows'] = 200; $config['per_page'] = 20; $this->pagination->initialize($config); 

Перед строкой:

 $this->base_url = rtrim($this->base_url).'&amp;'.$this->query_string_segment.'='; 

Замените этот код ниже:

 if(isset($_GET[$this->query_string_segment])) { unset($_GET[$this->query_string_segment]); } $uri = http_build_query($_GET); $uri = empty($uri) ? '?' : $uri . '&amp;'; $this->base_url = rtrim($this->base_url).$uri.$this->query_string_segment.'='; с if(isset($_GET[$this->query_string_segment])) { unset($_GET[$this->query_string_segment]); } $uri = http_build_query($_GET); $uri = empty($uri) ? '?' : $uri . '&amp;'; $this->base_url = rtrim($this->base_url).$uri.$this->query_string_segment.'='; 

Просто просмотрите эту ссылку .
Просто обновите измененный класс разбиения на страницы, а затем добавьте

 $config['get'] = "?string=" . $_REQUEST['string']."&searchBy=" . $_REQUEST['searchBy']; 

У меня та же проблема. Мое решение – изменить Pagination и поместить его в приложение / библиотеки. Сначала создаю

 var $get=''; 

и найдите все «a» элементы и добавьте $ get в href="........'.$this->get.'"'>.......</a>

Теперь в контроллере или модели введите эту строку

 $config['get']=(isset($_GET['search']))?'?search='.$_GET['search']:''; 

Это оно! Надеюсь, это поможет вам.

В ВАШЕМ КОНТРОЛЛЕЛЕ:

$ config ['anchor_class'] = "class = 'link-pagination'";

В ВАШЕМ ПРОСМОТРЕ:

 $(".link-pagination").each(function() { $(this).attr("href", $(this).attr('href') + "?id=<?= $this->input->get('id') ?>"); }); 

Имела та же проблема, но поняла, что более новые версии CI имеют суффикс, определенный в классе pagination. Хотя это еще не в документации. Не нужно взламывать его.

Я столкнулся с подобной проблемой, и, основываясь на приведенном выше ответе, вот что я должен сделать для настройки в соответствии с моими потребностями.

Мой URI должен был быть примерно таким:

 base_url() . /search/?term= 

Итак, вот что я сделал:

 $config['base_url'] = base_url ."/search/?term=" . $_GET['term'] 

Надеюсь, вы найдете ответ на этой странице: LINK . Отредактируйте свой ответ, если сможете.