Kohana 3 нумерация страниц - PullRequest
       21

Kohana 3 нумерация страниц

6 голосов
/ 04 ноября 2010

Я действительно заблудился о том, как работает нумерация страниц в Kohana 3. Есть ли хороший пример нумерации страниц в Kohana 3?

Ответы [ 3 ]

14 голосов
/ 05 ноября 2010
        // Get the total count of articles
    $count = $this
        ->_profil
        ->articles
        ->count_all();

    // Create the pagination object
    $pagi = Pagination::factory(array(
        'items_per_page'    =>  4,
        'total_items'       =>  $count,
    ));

    // Find actual articles
    $articles = $this->_profil
        ->articles
        ->join_categories()
        ->order_by('id','DESC')
        ->limit($pagi->items_per_page)
        ->offset($pagi->offset)
        ->find_all();

, а затем в представлении вы просто делаете

echo $pagi; // ofc, after passing the Pagination object to view

. Что происходит здесь, это класс Pagination, использующий магический метод View __toString () для отображения html, необходимого для отображения нумерации страниц.Все параметры пагинации могут быть изменены при создании объекта (передача соответствующих ключей в массив, переданный методу factory () в нашем случае).

Ключом пагинации по умолчанию является «страница» (строка запроса), в то время как вы можетеизмените это также.Пагинация также имеет конфигурацию по умолчанию, которую вы можете переопределить, скопировав ее в папку application / config.

Наслаждайтесь ее использованием:)

3 голосов
/ 26 августа 2011

В Kohana 3.1 нумерация страниц не включена.Загрузите модуль и поместите его в папку modules .Включите модуль в вашем приложении / bootstrap.php . Это страница моего контроллера.Для дальнейшей настройки скопируйте предоставленный файл конфигурации из modules / pagination / config / pagination.php в application / config / pagination.php

    $per_page =2;
    $page_num = $this->request->param('page', 1);
    $offset   = ($page_num - 1) * $per_page;
    $view =View::factory('image/imagelist')->bind('page_links',$page_links)->bind('results', $results)->bind('pagination', $pagination);

     // Get the total count of records in the database
     $userid = Auth::instance()->get_user()->pk();  
     $count=ORM::factory('user_image')->where('app_userid','=',$userid)->count_all(); 


     // Create an instance of Pagination class and set values
     $pagination = Pagination::factory(array( 

      'total_items'    => $count,
      'current_page'   => array('source' => 'image/imagelist', 'key' => 'page'), 
      'items_per_page' => $per_page,
      'offset'  =>  $offset,
      'view'    =>  'pagination/basic'
  ));


      // Load specific results for current page
  $results = DB::select()->from('user_images')
            ->where('app_userid','=',$userid)
            ->order_by('image_id','ASC')
            ->limit($pagination->items_per_page)
            ->offset($pagination->offset)->execute();

 $page_links = $pagination;
 $this->template->content=$view->render();

errorException [Уведомление]: неопределенное свойство: Request::$uri.в классе пагинации (модуль).Чтобы исправить это исправить

Используйте Request::current()->uri() вместо Request::current()->uri

2 голосов
/ 04 ноября 2010

Вы можете найти несколько приличных документов в неофициальной вики Kohana .

...