我有一个问题要问你。我在页面中有一个过滤器,按价格对产品进行排序。如果我过滤产品,例如我有3页,当我切换到第2页时,过滤器消失。我需要在会话中保存这些数据吗?还是存在其他解决方案 我的控制器:
if ($form->isValid()) {
$aFilter['iMinPrice'] = $form["min_price"]->getData();
$aFilter['iMaxPrice'] = $form["max_price"]->getData();
}
//Search products
$aProducts = $repositoryProduct->getProductsOrderByDateDesc($id,null,$aFilter);
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$aProducts,
$page,
3
);
//Send data to view
return $this->render('ShopDesktopBundle:Category:category.html.twig',array(
'category' => $category,
'pagination' => $pagination,
'form' => $form->createView()
));
我的存储库:
if(!empty($aFilter)){
if(isset($aFilter['iMinPrice'])){
$qb->andWhere('p.product_price >= :price_min')
->setParameter('price_min',$aFilter['iMinPrice']);
}
if(isset($aFilter['iMaxPrice'])){
$qb->andWhere('p.product_price <= :price_max')
->setParameter('price_max',$aFilter['iMaxPrice']);
}
}
我的观点:
<form action="{{ path('show_product_category',{ 'id':category.getId(), 'name':category.getCategoryLink() }) }}" method="post" {{ form_enctype(form) }}>
<div class="accordion-inner">
{{ form_widget(form.min_price) }}
{{ form_widget(form.max_price) }}
</div>
</form>
{{ knp_pagination_render(pagination, null, {}, {'style': 'pager', 'prev_label': '← Older', 'next_label': 'Newer →'}) }}
我的路线:
show_product_category:
path: /{id}/{name}/{page}
defaults: { _controller: ShopDesktopBundle:Category:showCategory, page: 1}
requirements:
id: \d+
page: \d+
_method: GET|POST
请帮帮我! Thx提前!!!有任何建议请如何将查询参数附加到链接?
答案 0 :(得分:0)
您可以尝试将所有GET参数附加到分页的所有链接。 通过这种方式,每次切换页面时都可以使用它们。
使用KPNPaginator,您可以将请求查询传递给分页渲染器,如下所示:
{{ knp_pagination_render(pagination, null, _requestQuery, {'style': 'pager', 'prev_label': '← Older', 'next_label': 'Newer →'}) }}
事实上,KPN文件指出:
默认情况下,触发渲染方法时,分页会渲染 提供标准参数的模板:
pagination parameters
,与范围内的页面,当前页面等相似..route
- 用于生成页面,排序网址request_query
,其中包含所有GET请求参数extra
,分页模板参数除分页参数外,其他参数均可修改 或适应某些用例。通常它可能,你可能需要 如果默认配置不正确,则设置路由(因为 在子请求中呈现)。或者添加其他查询或视图 参数。