Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

Pagination
http://forum.kohanaframework.su/viewtopic.php?f=20&t=23
Страница 1 из 2

Автор:  admin [ 12 фев 2012, 22:03 ]
Заголовок сообщения:  Pagination

Установка и работа с модулем постраничной навигации в Кохане

Автор:  dostoevskiy.spb [ 27 мар 2012, 01:35 ]
Заголовок сообщения:  Re: Pagination

Мммм... Прочитал урок и не смог реализовать на своем сайте. Может я дурак, и упускаю какую-нибудь очевидную или не очень вещь, подскажите пожалуйста!
Что сделал:
Есть в 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. Объясните это пожалуйста, если не сложно!

Автор:  dostoevskiy.spb [ 27 мар 2012, 01:51 ]
Заголовок сообщения:  Re: Pagination

Видимо мне пора поспать) Проблема решилась. Может кому поможет, поэтому я напишу как исправил.
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;
    }


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

Автор:  Wapruks [ 05 авг 2012, 21:43 ]
Заголовок сообщения:  Re: Pagination

Имеется такая проблема. В базе 11 записей. Пагинатор разбивает на 3 страницы и на каждой одинаковые 11 записей. В чем проблема может быть?

Автор:  Wapruks [ 05 авг 2012, 21:48 ]
Заголовок сообщения:  Re: Pagination

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

Автор:  admin [ 05 авг 2012, 22:27 ]
Заголовок сообщения:  Re: Pagination

А вы limit() и offset() в запросе использовали ?

Автор:  AmberLEX [ 05 авг 2012, 22:54 ]
Заголовок сообщения:  Re: Pagination

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

Автор:  Wapruks [ 05 авг 2012, 23:22 ]
Заголовок сообщения:  Re: Pagination

Так, добавил limit() теперь выводится 5 записей, все норм. А как offset() юзать?

Автор:  Wapruks [ 05 авг 2012, 23:27 ]
Заголовок сообщения:  Re: Pagination

Все, нагуглил. Правда принципа работы offset() не понял. Сделал

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

Автор:  AmberLEX [ 06 авг 2012, 00:20 ]
Заголовок сообщения:  Re: Pagination

Вы может скажите, как у вас вышло, что при подсчете вы не учитываете условие ->where('town', '=', $this->town), а при получении новостей используете?

Страница 1 из 2 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/