【问题标题】:Symfony 4 - Multiple pagination render with KnpPaginatorBundle?Symfony 4 - 使用 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-&gt;query-&gt;getInt("page", 1) 用于产品和优惠券。使用不同的名称
  • @Cid 不应影响 knppaginator。但看起来问题出在视图部件上。你检查过你的浏览器吗?
  • 是的,我检查了浏览器并确认分页元素只呈现一次
  • 编辑:好的,如果我为页面使用不同的名称,它会起作用!谢谢!

标签: symfony view pagination


【解决方案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) }}

【讨论】:

    猜你喜欢
    • 2019-01-26
    • 2015-04-27
    • 2018-12-13
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多