Magento 2のカスタムコレクションにページネーションを追加する方法


17

私はカスタムモジュールに取り組んでいます。カスタムコレクションでデフォルトのmagento ページネーションを使用し、カスタム制限を設定するにはどうすればよいですか?


1
ページネーションと制限のためにmagento2でカスタムモジュールを作成したとき、これらのリンク(mage-world.com/blog/…)を参照しました。
アルジュン

カスタムモジュールにページネーションを追加するためにMagentoカタログをオーバーライドする方法について説明してください。上記のリンク私はいくつかのアイデアを得た、私はカタログモジュールでオーバーライドしたい
-Sushivam

@SachinS私はあなたがツールバーについて話しているのですか?
カイザーサッティ

はい、正確に...私は私が試したものを説明してきたし、ここでエラー... magento.stackexchange.com/questions/131896/...
Sushivam

@SachinSツールバーで達成したいこと、このmagento.stackexchange.com/questions/131805/
Qaisar Satti

回答:


23

そのためのコレクションを取得する

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 ?>

参照


Pssst:どちら$this->getRequest()->getParam('p') ?: 1か、または、さらに良いことに$this->getRequest()->getParam('p', 1)
nevvermind

私はあなたのコードを使用して作成しているページャーブロックに名前を付けようとすると、IDがすでに存在するエラーの要素を取得します。
LM_Fielding 16

この問題に直面していましたが、まだ削除してみません@LM_Fielding var/cachevar/generationフォルダを
Qaisar Satti

ツールバーの上部と下部に追加しようとしていたので、正確でした。
LM_Fielding 16

1
@LM_Fieldingを2回追加すると、問題が発生します。
カイザーサッティ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.