如何在Magento 2中的自定义集合上添加分页


17

我正在开发自定义模块。我该如何在我的自定义集合中使用默认的magento 分页,并对此设置自定义限制?


1
当我在magento2中创建用于分页和限制的自定义模块时,我引用了这些链接(mage-world.com/blog/…),我可以完成此工作。
Arjun

您能否解释一下如何覆盖Magento目录以向自定义模块添加分页!上面的链接我有个主意,我想在目录模块中覆盖
Sushivam '16

@SachinS我稀疏,您正在谈论工具栏?
卡萨尔·萨蒂

是的,完全是。。。我在这里描述了我尝试过的地方和错误... magento.stackexchange.com/questions/131896/…– Sushivam
2016年

你想要什么用工具栏实现和你解决这个@SachinS magento.stackexchange.com/questions/131805/...
凯萨尔萨蒂

Answers:


25

为此收集

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

添加分页

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

添加子块

public function getPagerHtml()
{
    return $this->getChildHtml('pager');
}

在phtml文件中

    <?php if ($block->getPagerHtml()): ?>
        <div class="order-products-toolbar toolbar bottom"><?php echo $block->getPagerHtml(); ?></div>
    <?php endif ?>

参考


附:或者,$this->getRequest()->getParam('p') ?: 1或者更好,$this->getRequest()->getParam('p', 1)
nevvermind

对于我尝试使用您的代码创建的寻呼机块的名称,我得到ID为id的元素已经存在的错误。
LM_Fielding '16

@LM_Fielding尚未遇到此问题,但尝试删除var/cachevar/generation文件夹
Qaisar Satti

我试图在顶部和底部为工具栏添加它,所以它是完全正确的。
LM_Fielding '16

1
@LM_Fielding您将其添加两次,从而导致了问题。
Qaisar Satti
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.