因此knp软件包可以很好地分页我的产品,但是当涉及到排序时我没有收到任何错误,但产品不会排序。
<div class="class1">
<span>DRAWBACK</span>
</div>
因此,当我尝试排序时,我没有收到任何错误,响应为200,URL随之改变:
<th{% if pagination.isSorted('a.price') %} class="sorted"{% endif %}>{{ knp_pagination_sortable(pagination, 'Price/Lowest', 'a.price') }}</th>
但产品未分类。这是某种错误吗?对于排序的东西,文档不是很清楚,但我不认为我做错了什么..
以下是价格字段:
?sort=a.pc&direction=asc&page=1
P.S。排序也不适用于其他参数,不仅仅是价格..
行动:
/**
* @ORM\Column(name="price", type="decimal", precision=10, scale=2, nullable=true)
*/
private $price;
答案 0 :(得分:1)
您仍在使用findBy()方法获取Product实体数组。 此方法将触发查询,并且分页包不再更改您的查询。相反,您应该添加自己的ProductRepository类并编写一个只返回DQL查询的方法。
class ProductRepository extends EntityRepository
{
public function findProducts()
{
$qb = $this->createQueryBuilder('p');
$qb->where('p.status=1');
return $qb->getQuery(); // WITHOUT ->getResult(); !!
}
}
在你的控制器中你会得到类似的东西:
$query = $em->getRepository('MpShopBundle:Product')->findProducts();
// ...
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$query,
$request->query->getInt('page', 1)/*page number*/,
9/*limit per page*/
);
还要记住,带有产品实体的数组是de $ pagination variabele而不是$ products varbele。 (您可以将$ pagination更改为$ products或更改您的twig模板)