我需要一些有关 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/