2

我需要一些关于 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。

4

1 回答 1

2

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

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"));
}
于 2013-03-14T04:43:58.813 回答