Symfony 4 - 使用 KnpPaginatorBundle 进行多分页渲染?
Posted
技术标签:
【中文标题】Symfony 4 - 使用 KnpPaginatorBundle 进行多分页渲染?【英文标题】:Symfony 4 - Multiple pagination render with KnpPaginatorBundle? 【发布时间】:2020-02-05 13:44:15 【问题描述】:我正在尝试在同一个视图上呈现多个分页。
在我的模板中,我使用制表符来分隔不同的列表,但我希望每个列表都有自己的分页
目前我已经:
Controller.php
public function index(Request $request, PaginatorInterface $paginator)
$productsLines = $stripeAdmin->findAllProducts();
$products = $paginator->paginate(
$productsLines,
$request->query->getInt("page", 1),
1
);
$products->setTemplate("pagination/stripePagination.html.twig");
$couponsLines = $stripeAdmin->findAllCoupons();
$coupons = $paginator->paginate(
$couponsLines,
$request->query->getInt("page", 1),
1
);
$coupons->setTemplate("pagination/stripePagination.html.twig");
return $this->render('stripe_admin/index.html.twig', [
"products" => $products,
"coupons" => $coupons,
]);
template.html.twig:
在每个标签中,我都有这个:
产品标签:
<div class="navigation">
knp_pagination_render(products)
</div>
优惠券标签:
<div class="navigation">
knp_pagination_render(coupons)
</div>
但最后我只有一个被渲染的。
有解决办法吗?
【问题讨论】:
看起来您在分页查询字符串中具有相同的变量名称。$request->query->getInt("page", 1)
用于产品和优惠券。使用不同的名称
@Cid 不应影响 knppaginator。但看起来问题出在视图部件上。你检查过你的浏览器吗?
是的,我检查了浏览器并确认分页元素只呈现一次
编辑:好的,如果我为页面使用不同的名称,它会起作用!谢谢!
【参考方案1】:
对于希望在同一页面中使用相同模板但具有不同查询参数的任何人,我找到了此解决方案并成功对其进行了测试。
/** pagination 1 */
$pagination1 = $paginator->paginate(
$queryContent1, /* query NOT result */
$request->query->getInt("page1", 1)/*page number*/,
10/*limit per page*/,
array(
'pageParameterName' => 'page1',
'sortFieldParameterName' => 'sort1',
'sortDirectionParameterName' => 'direction1',
)
);
/** pagination 2 */
$pagination2 = $paginator->paginate(
$queryContent2, /* query NOT result */
$request->query->getInt("page2", 1)/*page number*/,
10/*limit per page*/,
array(
'pageParameterName' => 'page2',
'sortFieldParameterName' => 'sort2',
'sortDirectionParameterName' => 'direction2',
)
);
return $this->render('folder/view.html.twig', array(
'list1' => $pagination1,
'list2' => $pagination2
));
在视图中:
# first #
knp_pagination_render(list1)
# second #
knp_pagination_render(list2)
【讨论】:
以上是关于Symfony 4 - 使用 KnpPaginatorBundle 进行多分页渲染?的主要内容,如果未能解决你的问题,请参考以下文章
Symfony 4 API 平台和 JWT:如何使用 Symfony 客户端项目登录 API?
在 Symfony 4.4 中使用 RedisTagAwareAdapter
Symfony 4 - Webpack-encore 使用 FosJsRouting :路由未定义