首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony2 KnpPaginator包,在我的视图中无法对两个分页表进行排序。

Symfony2 KnpPaginator包,在我的视图中无法对两个分页表进行排序。
EN

Stack Overflow用户
提问于 2012-05-07 10:43:46
回答 2查看 5.6K关注 0票数 1

我有一个控制器,它使用KnpPaginator Bundle将2组分页结果传递给一个小枝(作为两个表示表的数组)。

当两个表都出现并分页时,我无法对其中任何一个进行排序。编辑:当我更改表1的页面时,表2的页面也更改为该页码。

尝试将它们中的任何一个排序返回:在给定的查询中没有以t作为别名的组件,或者在给定的查询中没有以r作为别名的组件。

控制员:

代码语言:javascript
复制
    $em = $this->getDoctrine()->getEntityManager();
    $pageSize =  $this->container->getParameter('page_size');
    $paginator = $this->get('knp_paginator');

    /* Queries */
    $queryTest = $em
        ->createQuery('
            SELECT t FROM PanasonicTestEtAvisBundle:Test t
            JOIN t.product p
            WHERE p.id = :id
            AND t.isDeleted = :isdeleted
            ORDER BY t.creationDate DESC'
        )->setParameter('id', $id)
         ->setParameter('isdeleted', '0');

    $queryReview = $em
        ->createQuery('
            SELECT r FROM PanasonicTestEtAvisBundle:Review r
            JOIN r.product p 
            WHERE p.id = :id
            AND r.isDeleted = :isdeleted
            ORDER BY r.creationDate DESC'
        )->setParameter('id', $id)
         ->setParameter('isdeleted', '0');

    /* paginated results */
    $paginationTest = $paginator->paginate($queryTest, $this->get('request')->query->get('page', 1), $pageSize);
//        compact('paginationTest');

    $paginationReview = $paginator->paginate($queryReview, $this->get('request')->query->get('page', 1), $pageSize);
//        compact('paginationReview');
//        compact('pagination');

    return $this->render('PanasonicTestEtAvisBundle:Product:show.html.twig', array(
        'paginationTest' => $paginationTest,
        'paginationReview' => $paginationReview
    ));

错误只在我传递两个分页(paginationTest & paginationReview)时才会出现,如果只传递一个,它就会完美无缺。

有人能告诉我怎么解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-24 06:58:37

您的示例不起作用,因为对两个分页集都使用相同的页变量" page“。

如果要在同一位置使用两个或多个分页集,则必须这样做:

你们的主计长:

代码语言:javascript
复制
...

$pagename1 = 'page1'; // Set custom page variable name
$page1 = this->get('request')->query->get($pagename1, 1); // Get custom page variable
$paginationReview = $paginator->paginate(
    $queryReview, 
    $page1, 
    $pageSize,
    array('pageParameterName' => $pagename1)
);

$pagename2 = 'page2'; // Set another custom page variable name
$page2 = this->get('request')->query->get($pagename2, 1); // Get another custom page variable
$paginationReview = $paginator->paginate(
    $queryReview, 
    $page2, 
    $pageSize,
    array('pageParameterName' => $pagename2)
);

return $this->render('PanasonicTestEtAvisBundle:Product:show.html.twig', array(
    'paginationTest' => $paginationTest,
    'paginationReview' => $paginationReview
));

你的观点:

代码语言:javascript
复制
// PanasonicTestEtAvisBundle:Product:show.html.twig
{# First set #}
{% for test in paginationTest %}
<tr>
    <td>{{ test.id }}</td>
</tr>
{% endfor %}
{{ paginationTest.render()|raw }}

{# Second set #}
{% for review in paginationReview %}
<tr>
    <td>{{ review.id }}</td>
</tr>
{% endfor %}
{{ paginationReview.render()|raw }}

享受吧!

票数 2
EN

Stack Overflow用户

发布于 2017-03-01 10:53:28

现在是2017年,我遇到了类似的问题。仅供参考,我正在使用:

代码语言:javascript
复制
    "knplabs/knp-paginator-bundle": "^2.5",

我试着用Symfony的爬虫运行几个功能测试。其中一些人使用Knp分页器提供以下选项:

代码语言:javascript
复制
[
    'defaultSortFieldName' => 'voucher.id',
    'defaultSortDirection' => 'DESC',
    'wrap-queries' => true,
    'defaultFilterFields' => ['voucherText.title']
]

而有这些选择的其他人:

代码语言:javascript
复制
[
    'defaultSortFieldName' => 'event.id',
    'defaultSortDirection' => 'DESC',
    'wrap-queries' => true,
    'defaultFilterFields' => ['event.name', 'eventText.description']
]

排序参数名出现了问题,因为两个Paginator都在使用defaul 'sort‘键,从全局$_GET数组获取它--您可以自己检查它:$_GET

然而,神秘的部分是抛出的错误:

代码语言:javascript
复制
UnexpectedValueException: There is no component aliased by [event] in the given Query

为了避免这种奇怪的情况,我找到了一个'sortFieldParameterName‘选项,您可以将它添加到Paginator的所有选项中:

代码语言:javascript
复制
[
    'sortFieldParameterName' => 'sort_event',
    'defaultSortFieldName' => 'event.id',
    'defaultSortDirection' => 'DESC',
    'wrap-queries' => true,
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10480661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档