Symfony2将散列片段参数附加到分页URL



我正在使用symfony2开发一个网站。我正在使用KnpPaginationBundle对页面中的产品列表进行分页。一切都很顺利。但我找不到一种方法来传递额外的参数,比如我想在网站url中显示的div部分的id,比如:localhost/my_store/web/app_dev.php/products?page=2#idsection

我看到了两种实现目标的方法,它们都与javascript相连。

1) 如果你有URLlocalhost/website/app_dev.php/page=2#blockid,你可以尝试从url中获取这个id,然后通过js向下滚动。你的js应该是这样的smth:

$(document).ready(function(){
var ourUrl = window.location.href; 
var pattern = /#w+$/;
var divId = ourUrl.match(pattern));
var offset = $(divId).offset();
window.scrollTo(0, offset.top);
});

2) 另一种方法是使用ajax对产品进行分页。有了这种方法,你就不需要在某个地方滚动了。

晚了几年,但如果其他人正在寻找在其knp/paginator绑定URI中包含片段的能力。

Symfony 3.2+UrlGenerator接受用于创建#片段的_fragment参数。

在knp/paginator bundle中,$paginator->paginate()接口提供了传递给SymfonyUrlGeneratorSlidingPagination::setParam()方法。

UrlGenerator::generate($pagination->getRoute(), $pagination->getParams())

在knp/paginaior bundle 2.0-2.2.*中,SlidingPagination::sortable()方法调用UrlGenerator::generate()方法。

在knp/paginatior bundle 2.3.*中,knp_pageation_*trich函数调用UrlGenerator::generate()方法。

在knp/paginaior捆绑包2.4+中,路由器逻辑从Twig扩展移到了处理器。

示例用法

$pagination = $paginator->paginate($query, $request->query->getInt('page', 1), $limit);
$pagination->setParam('_fragment', 'idsection');
return $this->render('view.html.twig', [
'pagination' => $pagination
]);
{{ knp_pagination_sortable(pagination, 'Title', 'alias.property') }} #idsection
{{ knp_pagination_render(pagination) }} #idsection

相关内容

  • 没有找到相关文章

最新更新