【发布时间】:2015-03-31 06:45:36
【问题描述】:
我有一个问题要问你。我在页面中有一个按价格对产品进行排序的过滤器。如果我过滤产品,例如我有 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
请帮帮我!提前谢谢!!!有什么建议请如何将查询参数附加到链接?
【问题讨论】:
-
你不能使用在你的 url 中附加一个查询字符串来获取你的页面的过滤器吗?因此,如果您切换到第 2 页,您只需附加它并使用 symfony 的输入
GET。 -
我通过添加路线和表单来编辑问题
-
如果我在表单方法 GET 中更改 url 是这样的: ?product[min_price]=0&product[max_price]=30 如果切换到第 2 页,则 url 是: /2 。跨度>
-
如何切换到第 2 页?是菜单还是链接?如果是这样,您应该在视图中附加查询参数......或者如果它是通过在 URL 浏览器栏中输入,那么它应该是 session
-
我编辑了问题,我使用 knp_paginator 切换到第 2 页
标签: php symfony symfony-forms php-5.3 symfony-2.3