Разбивка на страницы в CodeIgniter, необходимо отключить строки запроса, чтобы мы могли кешировать - PullRequest
0 голосов
/ 19 октября 2011

У нас есть установка CI, которая имеет следующую настройку в нашей конфигурации ...

$config['enable_query_strings'] = TRUE;

Это необходимо для правильной работы другой области нашего приложения с сторонним API.Однако происходит то, что разбиение на страницы по умолчанию выполняется методом разбивки на строки запроса, что плохо сочетается с кэшированием.

Сейчас они выглядят так ...

http://localhost/something/?&page=6

Кэширование не очень хорошо, в основном потому, что URL каждой страницы - это та же страница, что и для CI.Моя цель - переключиться на приведенный ниже пример, не вмешиваясь в глобальные настройки для остальной части моего приложения.

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

http://localhost/something/1
http://localhost/something/2
http://localhost/something/3

До сих пор я не смог переопределить эту настройку для этого контроллера, и, честно говоря, я 'Я не уверен, что есть даже способ сделать это.Любая помощь приветствуется.Должен быть какой-то метод отключения функции для одного контроллера.

Ответы [ 2 ]

2 голосов
/ 19 октября 2011

Простое решение ...

$this->config->set_item('enable_query_strings',FALSE);

Просто поместите это перед вызовом логики разбиения на страницы в контроллере. Спасибо Тафтсе в IRC-канале #codeigniter за это простое переопределение.

2 голосов
/ 19 октября 2011

Не могли бы вы использовать маршрутизацию ?

$route['something/page/(:num)'] = "something?&page=$1";

edit: отключить строки запроса разбивки на страницы с помощью $config['enable_query_strings'] = TRUE;

Система / Библиотеки / Pagination.php

~ строка 134

изменить

    if ($CI->config->item('enable_query_strings') === TRUE OR $this->page_query_string === TRUE)
    {
        if ($CI->input->get($this->query_string_segment) != 0)
        {
            $this->cur_page = $CI->input->get($this->query_string_segment);

            // Prep the current page - no funny business!
            $this->cur_page = (int) $this->cur_page;
        }
    }
    else
    {
        if ($CI->uri->segment($this->uri_segment) != 0)
        {
            $this->cur_page = $CI->uri->segment($this->uri_segment);

            // Prep the current page - no funny business!
            $this->cur_page = (int) $this->cur_page;
        }
    }

до

        if ($CI->uri->segment($this->uri_segment) != 0)
        {
            $this->cur_page = $CI->uri->segment($this->uri_segment);

            // Prep the current page - no funny business!
            $this->cur_page = (int) $this->cur_page;
        }

~ строка 196

    if ($CI->config->item('enable_query_strings') === TRUE OR $this->page_query_string === TRUE)
    {
        $this->base_url = rtrim($this->base_url).'&'.$this->query_string_segment.'=';
    }
    else
    {
        $this->base_url = rtrim($this->base_url, '/') .'/';
    }

до

        $this->base_url = rtrim($this->base_url, '/') .'/';

это может сделать это. Или, может быть, лучшей формой было бы зацепить страницу ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...