Pracuję nad niestandardowym modułem. Jak mogę korzystać z domyślnej paginacji Magento w mojej kolekcji niestandardowej, a także ustawić dla niej niestandardowe limity?
Pracuję nad niestandardowym modułem. Jak mogę korzystać z domyślnej paginacji Magento w mojej kolekcji niestandardowej, a także ustawić dla niej niestandardowe limity?
Odpowiedzi:
zdobądź za to kolekcję
public function getNews()
{
//get values of current page
$page=($this->getRequest()->getParam('p'))? $this->getRequest()->getParam('p') : 1;
//get values of current limit
$pageSize=($this->getRequest()->getParam('limit'))? $this->getRequest()->getParam('limit') : 1;
$newsCollection = $this->newscollectionFactory->create();
$newsCollection->addFieldToFilter('is_active',1);
$newsCollection->setOrder('title','ASC');
$newsCollection->setPageSize($pageSize);
$newsCollection->setCurPage($page);
return $newsCollection;
}
Dodaj podział na strony
protected function _prepareLayout()
{
parent::_prepareLayout();
$this->pageConfig->getTitle()->set(__('News'));
if ($this->getNews()) {
$pager = $this->getLayout()->createBlock(
'Magento\Theme\Block\Html\Pager',
'test.news.pager'
)->setAvailableLimit(array(5=>5,10=>10,15=>15))->setShowPerPage(true)->setCollection(
$this->getNews()
);
$this->setChild('pager', $pager);
$this->getNews()->load();
}
return $this;
}
dodawanie bloku potomnego
public function getPagerHtml()
{
return $this->getChildHtml('pager');
}
w pliku phtml
<?php if ($block->getPagerHtml()): ?>
<div class="order-products-toolbar toolbar bottom"><?php echo $block->getPagerHtml(); ?></div>
<?php endif ?>
$this->getRequest()->getParam('p') ?: 1
albo, jeszcze lepiej, $this->getRequest()->getParam('p', 1)
.
var/cache
i var/generation
folder