我有一个控制器,它使用KnpPaginator Bundle将2组分页结果传递给一个小枝(作为两个表示表的数组)。
当两个表都出现并分页时,我无法对其中任何一个进行排序。编辑:当我更改表1的页面时,表2的页面也更改为该页码。
尝试将它们中的任何一个排序返回:在给定的查询中没有以t作为别名的组件,或者在给定的查询中没有以r作为别名的组件。
控制员:
$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)时才会出现,如果只传递一个,它就会完美无缺。
有人能告诉我怎么解决这个问题吗?
发布于 2012-05-24 06:58:37
您的示例不起作用,因为对两个分页集都使用相同的页变量" page“。
如果要在同一位置使用两个或多个分页集,则必须这样做:
你们的主计长:
...
$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
));你的观点:
// 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 }}享受吧!
发布于 2017-03-01 10:53:28
现在是2017年,我遇到了类似的问题。仅供参考,我正在使用:
"knplabs/knp-paginator-bundle": "^2.5",我试着用Symfony的爬虫运行几个功能测试。其中一些人使用Knp分页器提供以下选项:
[
'defaultSortFieldName' => 'voucher.id',
'defaultSortDirection' => 'DESC',
'wrap-queries' => true,
'defaultFilterFields' => ['voucherText.title']
]而有这些选择的其他人:
[
'defaultSortFieldName' => 'event.id',
'defaultSortDirection' => 'DESC',
'wrap-queries' => true,
'defaultFilterFields' => ['event.name', 'eventText.description']
]排序参数名出现了问题,因为两个Paginator都在使用defaul 'sort‘键,从全局$_GET数组获取它--您可以自己检查它:$_GET
然而,神秘的部分是抛出的错误:
UnexpectedValueException: There is no component aliased by [event] in the given Query为了避免这种奇怪的情况,我找到了一个'sortFieldParameterName‘选项,您可以将它添加到Paginator的所有选项中:
[
'sortFieldParameterName' => 'sort_event',
'defaultSortFieldName' => 'event.id',
'defaultSortDirection' => 'DESC',
'wrap-queries' => true,
]https://stackoverflow.com/questions/10480661
复制相似问题