我正在尝试在我的新闻Feed上创建分页。我的新闻Feed中有两种模式:所有新闻Feed和按类别提供的Feed。所有新闻摘要的分页工作正常,但我有“按类别分类”分页的问题。
我像这样使用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中指定带有参数的路线正确?
我的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))?>">
«
</a>
</li>
<? else: ?>
<li class="disabled"><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: ?>
<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))?>">
»
</a>
</li>
<?php else: ?>
<li class="disabled"><span>»</span></li>
<?php endif; ?>
</ul>
</div>
<div>
<span class="small grey"><?="Страница ".$this->current." из ".$this->pageCount?></span>
</div>
<?php endif; ?>
答案 0 :(得分:7)
你应该将所有附加参数作为关联数组传递到最后,就像@ rianattow所说的那样。通过这种方式,您pagination_control.phtml
部分$this->paramname
示例:
echo $this->paginationControl(
$this->news,
'Sliding',
'pagination_control',
array( 'route' => 'news/category', 'category' => 'banana')
);
paginator documentation中说明了这个细节:
第四个也是最后一个参数是为可选的关联保留的 要在视图中使用的其他变量数组 (可通过$ this获得)。例如,这些值可能包括额外的 分页链接的URL参数。
我认为其他缺点是使用路由名称构建URL。不要将url作为参数传递给paginationControl()
助手,而是尝试在分页内部生成url,如下所示:
<a href="<?
echo $this->url($this->route, array('page' => $page, 'category' => $this->category))
?>">
希望它有所帮助。