У меня возникли проблемы с настройкой разбиения на страницы на 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 Журнал изменений
Сегодня я боролся с тем же вопросом. Мое решение таково:
Создайте ссылки на страницы и сохраните их в строке ( $pagination = $this->pagination->create_links();
)
Используйте 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);
Работает как прелесть для меня! Что он делает:
Затем просто назначьте переменную шаблону, который будет показан, и используйте 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).'&'.$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 . '&'; $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 . '&'; $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 . Отредактируйте свой ответ, если сможете.