php - Zend_Paginator 让用户选择每页的行数

标签 php zend-framework zend-paginator

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

我正在使用 Zend_Paginator,它的工作原理就像一个魅力,从我看来,我想要一个选择器,让用户选择他想要的每页行数,这将设置 setItemCountPerPage( ) 方法。截至目前,我的 View 中有一个硬编码的选择表单元素(使用 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>

它可以工作,但我需要在多个 View 中使用它,所以我尝试用这样的东西在部分 View 中弥补一些内容:

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

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

对于让用户选择他想要的每页行数的功能来说,最通用和可重用的开发策略是什么?

感谢您的建议。

f.

最佳答案

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

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"));
}

关于php - Zend_Paginator 让用户选择每页的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15383627/

相关文章:

javascript - 使用 Ajax 将密码发送到 PHP

php - PHP 函数结构的替代方案

php - 如何将 Zend_Framework 从 1.9 升级到 1.10?

zend-framework - Zend_Form 和分页

php - 如何在不加载数据库的所有结果的情况下使用 zend paginate

php - 电子邮件模板生成器,例如 Mailchimp

php - 添加数据到分页器(KnpPaginatorBundle,Symfony)

zend-framework - 从 Controller 本身获取 Controller 名称

php - Zend Framework 生成唯一的字符串

php - 在启用 DB 分析器的情况下发出缓存 Zend_Paginator