Как указать маршрут с параметром в paginationControl?

Я пытаюсь создать разбивку на страницы в своем ленте новостей. У меня есть два режима в ленте новостей: все каналы новостей и каналы по категориям. Разбивка страниц для всех новостных лент работает нормально, но у меня проблемы с разбивкой по категориям «feed by category».

Я использую paginationControl следующим образом:

<?=$this->paginationControl( $this->news, 'Sliding', 'pagination_control', array('route' => 'news/category') )?> 

news/category маршрутов news/category config:

 'category' => array( 'type' => 'Segment', 'options' => array( 'route' => '/:category[/page-:page]', 'constraints' => array( 'category' => '[az]+', 'page' => '[1-9][0-9]*', ), 'defaults' => array( 'controller' => 'News\Controller\Item', 'action' => 'category', 'page' => 1, ) ), 'may_terminate' => true, ), 

Поэтому мне нужно указать категорию параметров. Я стараюсь:

 <?=$this->paginationControl( $this->news, 'Sliding', 'pagination_control', array('route' => 'news/category', array('category' => $this->category->getUrl())) )?> 

Но я получаю ошибку «Отсутствующий параметр …»:

введите описание изображения здесь

Похоже, что невозможно установить параметр через paginationControl.

Как правильно указать маршрут с параметром в paginationControl?

Обновление 1

Мое представление paginationControl выглядит так:

 <?php if ($this->pageCount > 1): ?> <div> <ul class="pagination pagination-sm"> <!-- Previous page link --> <?php if (isset($this->previous)): ?> <li> <a href="<?=$this->url($this->route, array('page' => $this->previous))?>"> &laquo; </a> </li> <? else: ?> <li class="disabled"><span>&laquo;</span></li> <? endif; ?> <!-- Numbered page links --> <? foreach ($this->pagesInRange as $page): ?> <? if ($page != $this->current): ?> <li> <a href="<?=$this->url($this->route, array('page' => $page))?>"> <?=$page?> </a> </li> <? else: ?> <li class="active"><span><?=$page?></span></li> <? endif; ?> <? endforeach; ?> <!-- Next page link --> <?php if (isset($this->next)): ?> <li> <a href="<?=$this->url($this->route, array('page' => $this->next))?>"> &raquo; </a> </li> <?php else: ?> <li class="disabled"><span>&raquo;</span></li> <?php endif; ?> </ul> </div> <div> <span class="small grey"><?="Страница ".$this->current." из ".$this->pageCount?></span> </div> <?php endif; ?> 

Related of "Как указать маршрут с параметром в paginationControl?"

Вы должны передать все дополнительные параметры в качестве ассоциативного массива в конце, как сказал @ rianattow. Таким образом, все эти параметры будут доступны в вашем pagination_control.phtml частичном через $this->paramname

Пример:

 echo $this->paginationControl( $this->news, 'Sliding', 'pagination_control', array( 'route' => 'news/category', 'category' => 'banana') ); 

Эта подробная информация указана в документации paginator :

Четвертый и последний параметр зарезервирован для необязательного ассоциативного массива дополнительных переменных, которые вы хотите получить в своем представлении (доступно через $ this). Например, эти значения могут включать дополнительные параметры URL для ссылки для разбивки на страницы.

Я думаю, что другим недостающим моментом является создание URL-адресов с использованием имен маршрутов. Вместо того, чтобы передавать URL-адрес помощнику paginationControl() в качестве аргумента, попробуйте создать URL-адрес внутри частичного разбиения на страницы следующим образом:

 <a href="<? echo $this->url($this->route, array('page' => $page, 'category' => $this->category)) ?>"> 

Надеюсь, поможет.