禁用分页的最佳方法是什么? 我需要查看所有页面,然后渲染视图并获取渲染的html。 (就我而言,它太慢了)
$paginationAdapter = new TebipPaginatorAdapter($this->getSmsService(),$filterParams);
// Creating and configuring paginator
$paginator = new Paginator($paginationAdapter);
$paginator->setCurrentPageNumber(1);
$paginator->setItemCountPerPage(0);
$view = new \Zend\View\Model\ViewModel();
$view->setVariables($result);
$view->setTemplate('/project/sms-stats/list-sms');
$viewRender = $this->getServiceLocator()->get('ViewRenderer');
$html = $viewRender->render($view);
这一行帮助我看到了所有呈现的HTML,但它太慢了
$paginator->setItemCountPerPage(0);
答案 0 :(得分:4)
这个问题很奇怪......
要么你想要Pagination,在这种情况下你只看到一小部分,或者你不想要分页,在这种情况下你会看到所有条目。
如果你有一个要求列出所有条目的Action,那么不要使用分页,就像那样简单。
虽然在大多数情况下我建议您只需启用一个参数来增加每页项目数量。在单个页面上列出100/200/500条目作为最大值应该绰绰有余。
答案 1 :(得分:1)
我猜您的适配器 TebipPaginatorAdapter 会返回一个对象
你的分页对象很重
要提高性能,您需要将适配器更改为阵列。
http://www.webconsults.eu/blog/entry/108-What_is_a_Hydrator_in_Zend_Framework_2
zend中的天然保湿剂
http://framework.zend.com/manual/2.2/en/modules/zend.stdlib.hydrator.aggregate.html
+你需要使用带有保湿器的缓存http://samsonasik.wordpress.com/2012/09/27/zend-framework-2-using-zendcache-and-hydratingresultset-to-save-database-resultset/
它会提高你的性能。
public function __construct(Adapter $adapter)
{
$this->adapter = $adapter;
$this->resultSetPrototype = new HydratingResultSet();
$this->resultSetPrototype->setObjectPrototype(new Sample());
$this->initialize();
}
将对象转换为数组数据(提取)或其他方式转换(水合)
namespace Zend\Stdlib\Hydrator;
interface HydratorInterface
{
/**
* Extract values from an object
*
* @param object $object
* @return array
*/
public function extract($object);
/**
* Hydrate $object with the provided $data.
*
* @param array $data
* @param object $object
* @return object
*/
public function hydrate(array $data, $object);
}
我在Symfony遇到了同样的问题,我使用了hydrator + cache。