数据分页在magento里面是一个基本的功能,调用magento自带的$block->getPagerHtml(),再配合上资源模块里面$this->setChild('pager', $pager);也就能完成分页了,但这次却出现了异常,主要表现在数据并不能分页,但分页块却是正常的显示出来了,如下图:
原因:在调用资源模块时,直接返回了资源模型数据,导致每一次都是load最新的数据
protected function _prepareLayout()
{
parent::_prepareLayout();
if ($this->getCollection()) {
$pager = $this->getLayout()->createBlock(
\Magento\Theme\Block\Html\Pager::class,
'my.list.give'
)->setCollection(
$this->getCollection()
);
$this->setChild('pager', $pager);
$this->getCollection()->load();
}
return $this;
}
public function getCollection(){
return $this->getModel()->getList();
}
解决方案:将collection保存到变量里面,没数据的时候才是调用资源模块
protected $collection;
protected function _prepareLayout()
{
parent::_prepareLayout();
if ($this->getCollection()) {
$pager = $this->getLayout()->createBlock(
\Magento\Theme\Block\Html\Pager::class,
'my.list.give'
)->setCollection(
$this->getCollection()
);
$this->setChild('pager', $pager);
$this->getCollection()->load();
}
return $this;
}
public function getCollection(){
//不存在数据资源时,才去连接查询
if(!$this->collection){
$this->collection = $this->getModel()->getList();
}
return $this->collection;
}