Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 28 мар 2024, 16:55

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Pagination
СообщениеДобавлено: 12 фев 2012, 22:03 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Установка и работа с модулем постраничной навигации в Кохане

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Pagination
СообщениеДобавлено: 27 мар 2012, 01:35 
Не в сети
Зеленый

Зарегистрирован: 27 мар 2012, 01:23
Сообщения: 5
Мммм... Прочитал урок и не смог реализовать на своем сайте. Может я дурак, и упускаю какую-нибудь очевидную или не очень вещь, подскажите пожалуйста!
Что сделал:
Есть в Bootstrap route
Код:
Route::set('news', '(<town>/)news(/<action>(/<page>)(/<id>))', array('town'=>'spb|msk', 'page'=>'[0-9]+'))
        ->defaults(array(
            'directory' => 'lists',
            'controller' => 'news',
            'action' => 'index'
        ));


Есть контроллер который обрабатывает страничку новостей. Вот action отвечающий за него:
Код:
public function action_business() {
        $orm_category = $this->get_categories('business');
        $orm_news = ORM::factory('news')->where('town', '=', $this->town)->where('category', '=', $orm_category->id)->find_all();
        $view_news = '';
        foreach ($orm_news as $orm_news_one) {
            $view_news.=view::factory('news/small')
                    ->set('date', $orm_news_one->date)
                    ->set('name', $orm_news_one->name)
                    ->set('low_description', $orm_news_one->low_description)
                    ->set('author', $orm_news_one->author)
                    ->set('id', $orm_news_one->id)
                    ->render();
        }
        $count = ORM::factory('news')->where('category', '=', 1)->count_all();
        $view_news.=Pagination::factory(array('total_items' => $count));
        $this->content = $view_news;
    }


Где я не прав, подскажите пожалуйста!!!!!

P.S. В уроке шла речь о том что модуль сам считает offset и limit потому в орм выборке статей из БД limit() и offset() не указывал. Хотя с ними тоже пробовал и результат тот же - не работает. И кстати у меня в url не выставляется номер страницы. вместо него какая-то ерунда: ?%2Fspb%2Fnews%2Fbusiness=. Это там где должен быть параметр page. Объясните это пожалуйста, если не сложно!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Pagination
СообщениеДобавлено: 27 мар 2012, 01:51 
Не в сети
Зеленый

Зарегистрирован: 27 мар 2012, 01:23
Сообщения: 5
Видимо мне пора поспать) Проблема решилась. Может кому поможет, поэтому я напишу как исправил.
1. У меня был старый модуль пагинатора. Лекарство-скачать новый по ссылке которая была в уроке.
2. Переписал код:
Код:
    public function action_business() {
        $orm_category = $this->get_categories('business');
        $count = ORM::factory('news')->where('category', '=', $orm_category->id)->count_all();
        $pagination = Pagination::factory(array('total_items' => $count))
                ->route_params(array('controller' => $this->request->controller(),
            'action' => $this->request->action(),
                ));
        $orm_news = ORM::factory('news')
                ->where('town', '=', $this->town)
                ->where('category', '=', $orm_category->id)
                ->limit($pagination->items_per_page)
                ->offset($pagination->offset)
                ->find_all();
        $view_news = '';
        foreach ($orm_news as $orm_news_one) {
            $view_news.=view::factory('news/small')
                    ->set('date', $orm_news_one->date)
                    ->set('name', $orm_news_one->name)
                    ->set('low_description', $orm_news_one->low_description)
                    ->set('author', $orm_news_one->author)
                    ->set('id', $orm_news_one->id)
                    ->render();
        }

           $view_news.=$pagination;
        $this->content = $view_news;
    }


Пара нехитрых манипуляций с модулем и все ок. Надеюсь, кому-нибудь поможет!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Pagination
СообщениеДобавлено: 05 авг 2012, 21:43 
Не в сети
Новичок

Зарегистрирован: 03 июл 2012, 14:46
Сообщения: 17
Имеется такая проблема. В базе 11 записей. Пагинатор разбивает на 3 страницы и на каждой одинаковые 11 записей. В чем проблема может быть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Pagination
СообщениеДобавлено: 05 авг 2012, 21:48 
Не в сети
Новичок

Зарегистрирован: 03 июл 2012, 14:46
Сообщения: 17
Вывожу 5 элементов на страницу. Тоесть он правильно разбивает на 3 страницы, но на каждой выводятся все записи


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Pagination
СообщениеДобавлено: 05 авг 2012, 22:27 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
А вы limit() и offset() в запросе использовали ?

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Pagination
СообщениеДобавлено: 05 авг 2012, 22:54 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Я чет не пойму, у вас запрос для подсчета записей один, а для получения новостей другой, они я так думаю должны быть одинаковыми.
Подсчитает одно количество, а получит другое.
И я уверен, что кода нужно раза в 3 меньше, чем вы тут написали)

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Pagination
СообщениеДобавлено: 05 авг 2012, 23:22 
Не в сети
Новичок

Зарегистрирован: 03 июл 2012, 14:46
Сообщения: 17
Так, добавил limit() теперь выводится 5 записей, все норм. А как offset() юзать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Pagination
СообщениеДобавлено: 05 авг 2012, 23:27 
Не в сети
Новичок

Зарегистрирован: 03 июл 2012, 14:46
Сообщения: 17
Все, нагуглил. Правда принципа работы offset() не понял. Сделал

...
-> offset($pagination -> offset)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Pagination
СообщениеДобавлено: 06 авг 2012, 00:20 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Вы может скажите, как у вас вышло, что при подсчете вы не учитываете условие ->where('town', '=', $this->town), а при получении новостей используете?

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group