簡體   English   中英

使用symfony2在會話中保存過濾器數據

[英]Save filter data in session using symfony2

我有一個問題問你。 我在頁面中有一個過濾器,可以按價格對產品進行排序。 如果我過濾產品,例如我有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

請幫幫我! 提前謝謝!!! 有什么建議請如何將查詢參數附加到鏈接?

您可以嘗試將所有GET參數附加到分頁的所有鏈接。 這樣,您每次切換頁面時都會擁有它們。

使用KPNPaginator,您可以將請求查詢傳遞給分頁渲染器,如下所示:

{{ knp_pagination_render(pagination, null, _requestQuery, {'style': 'pager', 'prev_label': '← Older', 'next_label': 'Newer →'}) }}

實際上,KPN文檔指出:

默認情況下,觸發render方法時,分頁將使用提供的標准參數來渲染模板:

  • pagination parameters ,例如范圍內的頁面,當前頁面等。
  • route用於生成頁面,對URL進行排序
  • request_query ,其中包含所有GET請求參數
  • extra分頁模板參數

除了分頁參數外,其他參數可以修改或適應某些用例。 通常有可能,如果默認值未正確匹配(由於在子請求中呈現),則可能需要設置路由。 或添加其他查詢或視圖參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM