как добавить нумерацию страниц в пользовательскую коллекцию в Magento 2

17

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

Кайсар Сатти
источник
1
Когда я создал свой собственный модуль в magento2 для разбивки на страницы и ограничения, я сослался на эту ссылку ( mage-world.com/blog/… ), и я смог это сделать.
Арджун
Не могли бы вы объяснить, как переопределить каталог Magento для добавления нумерации страниц в пользовательский модуль! По вышеуказанной ссылке у меня появилась идея, я хочу переопределить в модуле Каталога
Сушивам
@ SachinS я худой вы говорите о панели инструментов?
Кайсар Сатти
Да, именно ... Я описал то, что я попробовал и здесь ошибка ... magento.stackexchange.com/questions/131896/…
Сушивам
@SachinS то , что вы хотите достичь с помощью панели инструментов и вы решить эту magento.stackexchange.com/questions/131805/...
Кайсар Сатти

Ответы:

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папку
Кайсар Сатти
Я пытался добавить его для панели инструментов вверху и внизу, так что это было совершенно правильно.
LM_Fielding
1
@LM_Fielding вы добавляете его дважды, что вызывает проблему.
Кайсар Сатти