存档

文章标签 ‘Zend_Paginator’

在Zend框架中结合Zend_Paginator和Smarty实现分页

2010年3月30日

  在一般的Web程序中都要用到分页的功能。对于使用了Zend框架的Web程序来说,结合Zend自身的View和Zend_Paginator组件,实现分页是比较轻松的事。但在Zend中整合了Smarty模板语言后,又如何使用Zend_Paginator来实现分页呢。

  其实,我们在分析了Zend_Paginator源代码后,会发现其实实现分页也是比较容易的。下面我们具体来看一下。

  首先在Controller文件中,写如下的代码:
  

  //这里写生成$paginator的代码,我省略了.直接写输出代码
  Zend_Paginator::setDefaultScrollingStyle('Sliding'); //设置分页方式
  $this->view->pages = $paginator->getPages(); //获取关于分页的信息,又如当前是第几页,一共多少页等
  $this->view->items = $paginator->getIterator(); //获取可以迭代的具体数据

  然后在 tpl文件中如此写:

   //输出具体数据 <**>是我的smarty模板中设置的输出界定符
 
  <* if $items *>
   <*foreach name = index1 from = $items*>
      <*foreach name = index2 from = $index1*>
        <*$index2*>
      <*/foreach*>
   <*/foreach*>

  下面输出页码:

<* if $pages->pageCount*>
<div>
<!-- Previous page link -->
<* if $pages->previous *>
  <a href="/index/<* $pages->previous*>">
    < Previous
  </a> |
<*else*>
  <span>< Previous</span> |
<*/if*>
 
<!-- Numbered page links -->
<* foreach from = $pages->pagesInRange name = page*>
  <* if $page != $pages->current *>
    <a href="/index/<*$page*>">
        <*$page*>
    </a> |
  <*else*>
    <*$page*> |
  <*/if*>
<* /foreach*>
 
<!-- Next page link -->
<* if $pages->next *>
  <a href="/index/<* $pages->next*>">
    Next >;
  </a>
<*else*>
  <span>Next ></span>
<*/if*>
</div>
<*/if*>

  如此就完成了在Smarty下使用Zend_Paginator实现的效果。总结一下,在使用smarty时,controller文件中必须使用$paginator->getPages()和$paginator->getIterator()来获取分页信息及实际数据。然后在smarty模板文件中使用foreach语句输出就完成了。这个方式在我linux机器上测试成功。如果大家使用中还有什么问题,请留言。

  原创文章如转载,请注明:转载自张文杰的博客http://zhangwenjie.net ]

  本文链接地址:http://zhangwenjie.net/archives/339.html

Web , , ,