Zend_Paginator允许用户选择每页的行数

时间:2013-03-13 11:10:31

标签: php zend-framework zend-paginator

我需要一些Zend Framework分页的概念建议。

我正在使用Zend_Paginator,它就像一个魅力,从我的角度来看,我想要一个选择器让用户选择他想要的每页行数,这将设置setItemCountPerPage的参数( ) 方法。截至目前,我在我的视图中有一个硬编码的选择表单元素(用jQuery触发更改url),如下所示:

   <select id="rpp" name="rpp">
       <option value="/goods">--</option>
       <option value="/goods/rpp/2">[2 for dev]</option>
       <option value="/goods/rpp/5">5 <?php echo $this->translate('Rows per page') ?></option>
       <option value="/goods/rpp/15">15 <?php echo $this->translate('Rows per page') ?></option>
       <option value="/goods/rpp/25">25 <?php echo $this->translate('Rows per page') ?></option>
       <option value="/goods/rpp/50">50 <?php echo $this->translate('Rows per page') ?></option>
       <option value="/goods/rpp/100">100 <?php echo $this->translate('Rows per page') ?>   </option>
   </select>

它有效,但我需要在多个视图中使用它,所以我尝试在局部视图中用这样的东西组成一些东西:

...
<option value="<?php echo $this->userAgent()->getServerValue('request_uri'); ?>/rpp/2">[2 for dev]</option>
...

但在某些情况下最终会出现路由问题。

什么是一个好的开发策略,最通用和可重用的功能,让用户选择他想要的每页行数。

感谢您的建议。

F。

1 个答案:

答案 0 :(得分:2)

您可以在Bootstrap类中使用存储在会话中的Zend_Paginator::setDefaultItemCountPerPage方法和值来设置每页的项目。如果你想稍后在某个阶段改变它。只需为会话变量分配不同的值即可。例如(未测试

protected function _initPagination()
{
  $session = new Zend_Session_Namespace('default');
  $itemCountPerPage = (isset($session->itemCountPerPage) 
  ? $session->itemCountPerPage : 5);

  Zend_Paginator::setDefaultItemCountPerPage($itemCountPerPage);
}

稍后您的行动中某处:

public function itemCountPerPageAction()
{
  $session = new Zend_Session_Namespace('default');
  $session->itemCountPerPage = $this->_getParam('itemCountPerPage');
  $this->_helper->redirector->gotoUrlAndExit($this->_request->getServer("HTTP_REFERER"));
}