Концептуальная проблема нумерации кода - PullRequest
2 голосов
/ 04 июля 2011

У меня есть страница / обсуждение, и я хочу внедрить в нее нумерацию страниц. Теперь я хочу, чтобы в первый раз страница загружалась как / Discussion, что означает, что это будет действовать так, как если бы это было / Discussion / Page / 1. Для другой страницы URL будет /discussion/page/$pagenumber.

Теперь проблема в index (). Обычно я инициализирую все данные страницы в index (), а затем загружаю представление с инициализированными данными. Но здесь я должен инициализировать содержимое страницы по умолчанию в index (), а затем разбить содержимое на страницы в page (). Итак, есть ли способ отправить другой набор данных из page () в представление? Я не хочу загружать представление, так как оно будет загружено индексом ().

Однако я думаю, что невозможно сделать то, что я упомянул выше. Поэтому, возможно, я должен оставить свой index () пустым и выполнить всю инициализацию в page (), а затем загрузить представление там. Что ты говоришь?

Ответы [ 4 ]

4 голосов
/ 05 июля 2011

Вам не нужны методы "page" и "index", просто используйте route .

Используя метод index() и отбрасывая метод page():

$route['discussion/page/(:num)'] = 'discussion/index/$1';

/discussion по-прежнему дает вам страницу 1, запрос discussion/page/32 отобразится на discussion/index/32

Это предполагает, что вы захватываете номер страницы в качестве аргумента (сегмент URL)Примерно так:

function index ($page = 1) {}

Если вы делаете что-то еще, маршрут все еще уместен, может быть, просто не предоставленный.

1 голос
/ 04 июля 2011

Предлагаю взглянуть на удивительный пакет PEAR .Он автоматически генерирует пейджер и выдает правильные индексы в зависимости от (GET) входных переменных.

0 голосов
/ 05 июля 2011

Звучит так, будто вы пытаетесь, чтобы ваш метод страницы украсил ваш индексный метод.Не зная больше об общей структуре контроллера, сказать особо нечего, но похоже, что приведенное ниже поможет:

function page( $pos )
{
    $this->index( $pos );
}

// a default parameter lets you ensure that this does not neet to have a page set.
function index( $pos = 0 )
{
   // when calling the DB (I'm guessing that is where the pagination really happens)
   // COUNT should be defined in the config if possible.
   $this->db->where/*... add more here...*/->limit( COUNT, $pos );
}

Реально, вы должны взглянуть на свой класс маршрутизации URI илииспользуя метод _resolve, но это должно делать то, что вам нужно.

0 голосов
/ 05 июля 2011

Я не совсем уверен, в чем ваша проблема.

Если у вас есть метод index(), вы можете установить всю информацию о нумерации страниц, помните, что вы должны сообщить библиотеке пагинации, какой сегмент uri будетиспользуется для получения номера страницы, и это не имеет никакого отношения к index().

В контроллере нет метода page(), все страницы одинаковы index() сдругой набор разбитых на страницы данных, заданный uri_segment, определенным как номер страницы, что означает, что все содержимое, не связанное с разбитым на страницы разбивкой запросов, не затрагивается на страницах.

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