Подтвердить что ты не робот

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

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

если мой URL-адрес выглядит следующим образом: search/?type=groups

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

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

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

Благодарю вас

4b9b3361

Ответ 1

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

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

Ответ 2

В конфигурации страницы:

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

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

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

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

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

Ответ 3

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

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

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

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

code strong!

Ответ 4

Вот мое решение 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);
});

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

Ответ 5

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

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

$config['reuse_query_string'] = true;

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

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

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

Ответ 6

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

  • Создайте ссылки на страницы и сохраните их в строке ($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; чтобы показать ссылки с вашими строками запроса!

Ответ 7

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

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

Ответ 8

Я думаю, что вы пытаетесь сделать то же самое, что я пытался сделать, и я получил его для правильной работы, не устанавливая базовый 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); 

Ответ 9

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

$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.'=';

Ответ 10

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

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

Ответ 11

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

var $get='';

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

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

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

Что это! Я надеюсь, что это поможет вам.

Ответ 12

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

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

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

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

Ответ 13

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

Ответ 14

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

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

base_url() . /search/?term=

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

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

Ответ 15

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