我正在使用symfony2
. 我正在使用KnpPaginationBundle对页面中的产品列表进行分页。每件事都工作得很好。但我找不到一种方法来传递额外的参数,比如我想在网站 url 中显示的 div 部分的 id,比如:localhost/my_store/web/app_dev.php/products?page=2#idsection
。
2 回答
我看到了两种实现目标的方法,它们都与 javascript 相关联。
1)如果你有 url localhost/website/app_dev.php/page=2#blockid 你可以尝试从 url 获取这个 id 并通过 js 向下滚动。你的 js 应该是这样的:
$(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-bundle URI 中包含片段的能力。
Symfony 3.2+UrlGenerator
接受用于创建片段的_fragment
参数。#
在 knp/paginator-bundle 中,$paginator->paginate()
接口提供了SlidingPagination::setParam()
传递给 Symfony 的方法UrlGenerator
。
UrlGenerator::generate($pagination->getRoute(), $pagination->getParams())
在 knp/paginatior-bundle 2.0 - 2.2.* 中,该SlidingPagination::sortable()
方法调用该UrlGenerator::generate()
方法。
在 knp/paginatior-bundle 2.3.* 中,knp_pagination_* twig 函数调用该UrlGenerator::generate()
方法。
在 knp/paginatior-bundle 2.4+ 中,路由器逻辑从 Twig Extension 移动到Processor。
示例用法
$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