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

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

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

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

Маршрут news/category config:

'category' => array(
 'type' => 'Segment',
 'options' => array(
 'route' => '/:category[/page-:page]',
 'constraints' => array(
 'category' => '[a-z]+',
 '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

My paginationControl выглядит так:

<!--?php if ($this--->pageCount > 1): ?>
 <div>
 <ul>
 <!-- Previous page link -->
 <!--?php if (isset($this--->previous)): ?>
 <li>
 <a href="<?=$this->url($this->route, array('page' => $this->previous))?>">
 «
 </a>
 </li>
 <!--? else: ?-->
 <li><span>«</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: ?-->
 
 <!--? endif; ?-->
 <!--? endforeach; ?-->
 <!-- Next page link -->
 <!--?php if (isset($this--->next)): ?>
 <li>
 <a href="<?=$this->url($this->route, array('page' => $this->next))?>">
 »
 </a>
 </li>
 <!--?php else: ?-->
 <li><span>»</span></li>
 <!--?php endif; ?-->
 </ul>
 </div>
 <div>
 <span><!--?="Страница ".$this--->current." из ".$this->pageCount?></span>
 </div>
<!--?php endif; ?-->
1 ответ

Вы должны передать все дополнительные параметры в качестве ассоциативного массива в конце, как сказал @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-адрес внутри частичного разбиения на части так:

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

licensed under cc by-sa 3.0 with attribution.