`
xieye
  • 浏览: 835796 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

zend框架组件Zend_Paginator使用

    博客分类:
  • PHP
阅读更多
zend的paginator组件旨在提供一个通用的分页模块供php项目使用。
经源码分析,其提供一个类供继承Zend_Paginator_Adapter_DbSelect
需要重写count方法,和getItems($offset, $itemCountPerPage)方法。

分页的基本原理是查两遍,先查总数,再查某一页的数据。在一些需要并发较大程序的场合,可以在count函数中加入缓存机制。

在第一个示例中,显示了最简单的情况。
但是,事实上,这个最简单的情况组件是做了处理的,自动加上了limit,所以传入的select对象中不应有limit,组件对该select对象做解析,分析出从哪里截断等,所以不如下面的示例2和示例3那样,干脆都由自己定义好,

第二个示例展示了使用sql做查询的情况,此时必须写一个查询类充当适配器。
提供的附件中是
class SqlDemo extends Zend_Paginator_Adapter_DbSelect
该类必须有count方法和getItem方法的实现,就是用limit,很简单

第三个示例展示了使用select做查询的情况。此时,count方法可以固定,所以加了一个类。
好处是可以充分使用select的强大组合功能

在使用了分页组件后,分页模板中的各个属性都由paginator定义好了,这就是好处,能统一接口。


这是一个smarty模板文件
paginator_demo.tpl

{if $pageinfo->totalItemCount }
<div class="paginationControl">
<!-- Previous page link -->
{ if $pageinfo->previous }
  <a href="{$urlhelp->url($pageinfo->previous)}">
    &lt; Previous
  </a> |
{else}
  <span class="disabled">&lt; Previous</span> |
{/if}


{foreach from=$pageinfo->pagesInRange item=page }
  {if ($page != $pageinfo->current)}
    <a href="{$urlhelp->url($page)}">{$page}</a> |
   {else}
    {$page} |
  {/if}
{/foreach}

{if $pageinfo->next}
  <a href="{$urlhelp->url($pageinfo->next)}">
    Next &gt;
  </a>
{else}
  <span class="disabled">Next &gt;</span>
{/if}
</div>

{/if}



以下是demo.php

<?php

/**
 * 加载一些公共类,如db对象,也要加载zend的类自动载入方法, 该公共类需要自己写
 *
 * 这只是一个代码示例,运行还需要smarty和zend环境
 * 
 * 还建用户表member
 * 字段
 * id 自增主键
 * name 用户名
 * member_type_id 用户类型id
 * 
 */
include_once('public.php');

//定义smarty对象
$smarty = new Smarty(); // 需要先加载smarty

//定义一个url类,用于在分页html中显示页码的链接
class url_help{
   public function url($page){
      return '/command/paginator_demo/1.php?page=' . intval($page);  
   }
}
$url_obj = new url_help();


function echobr(){
  echo "<br>--------------------------------------------------------------------------";
}


echo "演示zend组件Pagintator的用法" . $_SERVER['REQUEST_URI'];

/**
 * 用法一,最简单,直接用select对象
 */
echo "<br>用法一,最简单,直接用select对象,";
$db = Sys::getdb();
$select = $db->select();
$select->from('member','*')
       ->order('id desc');
$paginator = Zend_Paginator::factory($select);
$paginator->setCurrentPageNumber(isset($_REQUEST['page']) ? $_REQUEST['page'] : 2); //设置当前页数2
$paginator->setItemCountPerPage(2); //设置每页的条数
$paginator->setPageRange(5);  //设置显示几个链接
//echo $paginator->count();
$arr = $paginator->getIterator();

//赋值
$smarty->assign("pageinfo",$paginator->getPages()); //默认Sliding
$smarty->assign("urlhelp",$url_obj); 
//引用模板文件
$smarty->display('paginator_demo.tpl'); 

var_dump($arr);


echobr();
echobr();


/**
 * 用法二,继承性质的使用,与select类无关,直接使用sql语句
 */

echo "<br>用法二,继承性质的使用,与select类无关,直接使用sql语句";

$adapter = new SqlDemo(); //定义适配器
$paginator = new Zend_Paginator($adapter);
$paginator->setCurrentPageNumber(isset($_REQUEST['page']) ? $_REQUEST['page'] : 2); //设置当前页数
$paginator->setItemCountPerPage(3); //设置每页的条数
$paginator->setPageRange(4);  //设置显示几个链接
$arr = $paginator->getIterator();
//赋值
$smarty->assign("pageinfo",$paginator->getPages()); //默认Sliding
$smarty->assign("urlhelp",$url_obj); 
//引用模板文件
$smarty->display('paginator_demo.tpl'); 

var_dump($arr);
echobr();
echobr();

/**
 * 用法三,继承性质的使用,与select类无关,直接使用sql语句
 */

echo "<br>用法三,继承性质的使用,使用select类";

$adapter = new MemberDemo(); //定义适配器
$paginator = new Zend_Paginator($adapter);
$paginator->setCurrentPageNumber(isset($_REQUEST['page']) ? $_REQUEST['page'] : 2); //设置当前页数
$paginator->setItemCountPerPage(3); //设置每页的条数
$paginator->setPageRange(6);  //设置显示几个链接
$arr = $paginator->getIterator();
echo "<br>总页数". $paginator->count();
//赋值
$smarty->assign("pageinfo",$paginator->getPages()); //默认Sliding
$smarty->assign("urlhelp",$url_obj); 
//引用模板文件
$smarty->display('paginator_demo.tpl'); 
var_dump($arr);
echobr();
echobr();

exit;



?>

分享到:
评论

相关推荐

    ZEND FRAMEWORK 1.11.7 中文参考文档

    •Getting Started with Zend_Paginator •Zend Framework Reference •Zend_Acl •Zend_Amf •Zend_Application •Zend_Auth •Zend_Barcode •Zend_Cache •Zend_Captcha •SimpleCloud API: Zend_Cloud...

    JQuery Ajax 分页插件 jquery_paginator

    **jQuery Ajax 分页插件 jquery_paginator 知识点详解** 在Web开发中,当页面数据量过大时,为了提高用户体验和加载速度,通常会采用分页技术来展示数据。jQuery是一个广泛使用的JavaScript库,提供了丰富的功能来...

    Python库 | django_paginator2-1.0.4-py2.py3-none-any.whl

    `django_paginator2` 是一个用于Django框架的第三方库,专门用于增强和优化默认的分页功能。 Django是Python的一个流行Web开发框架,它提供了内置的分页工具`django.core.paginator`,但有时开发人员可能需要更高级...

    PyPI 官网下载 | dinteractions_Paginator-1.3.2.tar.gz

    关于"Python库"的标签,它暗示了dinteractions_Paginator是一个可重用的代码集合,可能包含特定的功能,如数据处理、网络请求、用户界面组件等。Python库让开发者可以通过导入已有的功能模块,快速高效地开发应用,...

    Python库 | dinteractions_Paginator-1.3.1-py3-none-any.whl

    **Python库-dinteractions_Paginator 1.3.1** 在Python编程中,库是开发者的重要工具,它们提供了丰富的功能,使我们能够高效地完成各种任务。`dinteractions_Paginator`是一个这样的库,专为处理数据分页而设计。...

    PyPI 官网下载 | simple_paginator-0.3.0.tar.gz

    在实际使用"simple_paginator"之前,开发者需要先解压这个文件,然后通过Python的`setup.py`脚本进行安装,或者使用pip工具直接从PyPI源安装。一旦安装完成,就可以在自己的Python项目中导入并使用这个库,以便实现...

    zendframework 分页实现

    在PHP开发中,Zend Framework是一个广泛使用的开源框架,它提供了许多强大的工具来简化Web应用程序的构建。本篇文章将深入探讨如何在Zend Framework中利用`Zend_Paginator`组件实现高效的数据库查询分页。 `Zend_...

    zend 框架手册介绍

    - **灵活性**:允许开发者根据项目需求选择性地使用特定组件,而不是强制使用整个框架。 - **社区支持**:拥有活跃的开发者社区,提供了丰富的文档、教程和支持资源。 ##### 1.2 安装与准备 **系统需求**: - ...

    zf框架的zend_cache缓存使用方法(zend框架)

    在 Zend Framework 中,`Zend_Cache` 可与其他组件结合使用,例如: - **DB 分页**:`Zend_Paginator` 可与 `Zend_Cache` 结合,对数据库查询结果进行分页缓存。 - **数据库追踪**:`Zend_Db_Table` 提供了追踪功能...

    github_paginator:Github分页

    项目是使用框架进行的。 目录 入门 这些说明将为您提供在本地计算机上运行并运行的项目的副本,以用于开发和测试目的。 有关如何在实时系统上部署项目的注释,请参阅部署。 先决条件 -Node.js是基于Chrome V8 ...

    bootstrap分页组件 bootstrap-paginator-master

    Bootstrap-Paginator是一个专门针对Bootstrap框架设计的轻量级分页插件,它能够帮助开发者快速、便捷地在网页应用中实现美观且响应式的分页效果。 Bootstrap本身是一个流行的前端开发框架,它提供了一系列预设的CSS...

    zendframework留言分页

    在Zend Framework中,我们可以使用`Zend_Paginator`组件来实现。 - `Zend_Paginator`允许开发者根据数据源(如查询结果)创建分页对象,并提供简单的API来获取当前页的数据以及页码导航。 4. **数据查询与分页结合...

    php zendframework 常用代码

    - **Zend_Config_Ini**: 使用`Zend_Config_Ini`类来读取配置文件(`application.ini`)中的数据库配置。 - **Zend_Db::factory**: 根据配置创建数据库连接实例。 - **$db-&gt;query('SET NAMES UTF8')**: 设置数据库连接...

    bootstrap-paginator 分页组件

    Bootstrap Paginator是一款基于流行的Bootstrap框架设计的分页组件,它提供了高度可定制的界面和功能,使得在网页中实现数据分页变得简单而直观。这款组件以其简洁、响应式的界面和良好的用户体验而受到开发者们的...

    zend-framework-3-cookbook.pdf

    本书《zend-framework-3-cookbook.pdf》是一...本书的出版是为了让开发者能够更加深入地了解Zend Framework 3中的各个组件,通过实例教学的方式,帮助开发者能够快速掌握这个框架的使用,无论你正在编写什么样的项目。

    php-paginator:php分页处理类库

    2. **基本使用**:在使用`php-paginator`之前,你需要计算出总页数,这基于你的数据总数和每页显示的数据条数。然后实例化`Paginator`类,传入当前页码、总页数和每页条数。例如: ```php use Paginator\Paginator...

    Laravel开发-laravel-paginator

    在Laravel框架中,`Laravel-paginator`是用于处理数据分页的重要工具,它使得在大量数据集合中实现分页...在实际项目中,灵活运用`Laravel-paginator`,结合适当的前端组件,可以轻松实现美观且功能齐全的分页效果。

    spring + springmvc + mybatis 整合 demo 及 mybatis-paginator分页 demo

    总结来说,这个压缩包中的"ssm_paginator"可能包含了以下内容:Spring的配置文件、SpringMVC的配置及Controller代码、MyBatis的Mapper接口和XML映射文件、Mybatis-Paginator的配置和使用示例。通过学习和分析这个...

Global site tag (gtag.js) - Google Analytics