Его работу можно разделить на следующие этапы. 1) Проверяем параметр и сохраняем адрес текущей страницы в сессии (зачем это нужно я расскажу немного позже). 2) Настраиваем разбивку на страницы (строки 11-18). Для этого загружаем библиотеку pagination, передаём ей массив с параметрами и создаем ссылки. В качестве параметров мы указываем: общее количество записей (получаем с помощью метода getBugsCount()), количество записей, которые нужно показать на странице (читаем из конфига) и первую часть URL ссылок (к нему последним параметром библиотека будет добавлять номер первой записи на очередной странице). Т. е. если мы показываем по 5 записей на странице, библиотека создаст такие URL: …/bugtracker/page/ …/bugtracker/page/5 …/bugtracker/page/10 После этого мы загружаем список багов для данной страницы (строка 21). Запрос, который формирует этот список мы рассматривали в прошлый раз. 3) С помощью библиотеки table2tree мы преобразуем таблицу с данными о багах в HTML список (строки 23-28). 4) Загружаем список категорий (строка 30). Он используется для создания навигации по баг трекеру. 5) Показываем страницы (строки 32-37). Для этого загружаем представления и передаем им параметры. Подробно рассматривать все представления смысла я не вижу. В любом случае оформлением я не занимался, поэтому, скорее всего, их придется немного изменить. Например, добавить CSS классы. Но на принцип работы и передаваемые данные это влиять не будет. Поэтому сейчас я просто приведу краткое описание всех представлений. Все они находятся в папке (application\views): header. php – формирует заголовок страницы, загружает JavaScript и CSS файлы; categories. php – формирует список с перечнем категорий (используется для навигации); addbugform. php – форма добавления записи о найденном баге; allbugs. php – показывает список багов и строку со ссылками на другие страницы; footer. php – «хвостовик» страницы. Создание страницы выбранной категории. Приводить код этого метода я не буду, т. к. он практически полностью повторяет метод page. Тем не менее, есть несколько нюансов на которых стоит остановиться. Во-первых, метод контроллера, создающий страницу отдельной категории, называется category и принимает 2 параметра: название категории и номер первой записи на странице. Т. е. URL имеет такой вид: …/bugtracker/category/имя_категоии/номер_записи Во-вторых, при настройке библиотеки pagination необходимо явно указать в каком сегменте URL находится номер первой записи (по-умолчанию, это значение равно 3).
Понравилась статья? Получай обновления и будь всегда в курсе событий!