Kohana 3分页

时间:2010-11-04 19:56:40

标签: php pagination kohana kohana-3

我真的迷失在kohana如何分页.3。在Kohana 3的任何地方都有一个很好的分页例子吗?

3 个答案:

答案 0 :(得分:14)

        // 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()方法的数组)。

分页的默认键是“page”(查询字符串),您也可以修改它。分页也有一个默认配置,您可以通过将其复制到application / config文件夹来覆盖它。

享受使用它:)

答案 1 :(得分:3)

在Kohana 3.1中不包括分页。下载模块并将其放在 modules 文件夹中。在 application / 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 [Notice]:未定义的属性:Request::$uri。在分页类(模块)中。为了解决修复问题

使用Request::current()->uri()代替Request::current()->uri

答案 2 :(得分:2)

您可以在unofficial Kohana wiki找到一些不错的文档。