在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>&lt; 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 &gt;</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