як додати сторінки на користувацьку колекцію в Magento 2


17

Я працюю над спеціальним модулем. Як я можу використовувати маґентові сторінки за замовчуванням у моїй спеціальній колекції, а також встановити власні обмеження для цього?


1
Коли я створив свій власний модуль в magento2 для пагинації та обмежень, я переправив це посилання ( mage-world.com/blog/… ), і я міг це зробити.
Арджун

Чи можете ви поясніть, як замінити каталог Magento для додавання сторінки на користувальницький модуль! вище посилання я отримав деяку ідею, я хочу
переохотити

@SachinS я худий, ти говориш про панель інструментів?
Qaisar Satti

Так саме ... Я описав, що я спробував і помилки тут ... magento.stackexchange.com/questions/131896/…
Sushivam

@SachinS чого ви хочете досягти за допомогою панелі інструментів і чи вирішили ви це magento.stackexchange.com/questions/131805/…
Qaisar Satti

Відповіді:


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

Я отримую елемент з ідентифікатором вже існує помилка, за що б я не намагався назвати пейджер блок, який я створюю, використовуючи ваш код.
LM_Fielding

@LM_Fielding ще не стикався з цією проблемою, але спробуйте видалити var/cacheта var/generationпапку
Qaisar Satti

Я намагався додати його для панелі інструментів вгорі та внизу, тому це було абсолютно правильно.
LM_Fielding

1
@LM_Fielding ви додаєте її двічі, що викликає проблему.
Qaisar Satti
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.