From 344c995f59cf6c97a4ef419d7e14e3f426ad3c86 Mon Sep 17 00:00:00 2001
From: Rock Zhang <iamgtskk@gmail.com>
Date: Thu, 12 Nov 2015 11:03:13 +0800
Subject: [PATCH] 添加一些搜索参数,price,style等,同时支持区间查询

---
 yohobuy/m.yohobuy.com/application/controllers/Search.php                | 41 ++++++++++++++++++++++++++---------------
 yohobuy/m.yohobuy.com/application/modules/Product/controllers/Index.php | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------
 2 files changed, 109 insertions(+), 27 deletions(-)

diff --git a/yohobuy/m.yohobuy.com/application/controllers/Search.php b/yohobuy/m.yohobuy.com/application/controllers/Search.php
index 620cc76..d6272a3 100644
--- a/yohobuy/m.yohobuy.com/application/controllers/Search.php
+++ b/yohobuy/m.yohobuy.com/application/controllers/Search.php
@@ -35,13 +35,14 @@ class SearchController extends AbstractAction
         // 过滤请求参数
         $condition = filter_input_array(INPUT_GET, array(
             'query' => FILTER_DEFAULT,
-            'brand' => FILTER_VALIDATE_INT,
+            'brand' => FILTER_DEFAULT,
             'sort' => FILTER_DEFAULT,
             'msort' => FILTER_DEFAULT,
             'misort' => FILTER_DEFAULT,
-            'color' => FILTER_VALIDATE_INT,
-            'size' => FILTER_VALIDATE_INT,
-            'price' => FILTER_VALIDATE_INT,
+            'color' => FILTER_DEFAULT,
+            'size' => FILTER_DEFAULT,
+            'style' => FILTER_DEFAULT,
+            'price' => FILTER_DEFAULT,
             'discount' => FILTER_DEFAULT,
             'gender' => FILTER_DEFAULT,
             'p_d' => FILTER_DEFAULT,), false);
@@ -49,7 +50,7 @@ class SearchController extends AbstractAction
         $query = empty($condition['query']) ? null : strtolower(trim($condition['query']));
         if (isset($condition['discount'])) {
             $condition['p_d'] = rawurldecode($condition['discount']);
-            unset($condition['discount']);
+            // unset($condition['discount']); 为了兼容js中传参的discount
         }
         if (isset($condition['query'])) {
             $condition['query'] = rawurlencode($condition['query']);
@@ -200,13 +201,14 @@ class SearchController extends AbstractAction
             /* 过滤请求参数 */
             $condition = filter_input_array(INPUT_GET, array(
                 'query' => FILTER_DEFAULT,
-                'brand' => FILTER_VALIDATE_INT,
+                'brand' => FILTER_DEFAULT,
                 'sort' => FILTER_DEFAULT,
                 'msort' => FILTER_DEFAULT,
                 'misort' => FILTER_DEFAULT,
-                'color' => FILTER_VALIDATE_INT,
-                'size' => FILTER_VALIDATE_INT,
-                'price' => FILTER_VALIDATE_INT,
+                'color' => FILTER_DEFAULT,
+                'size' => FILTER_DEFAULT,
+                'style' => FILTER_DEFAULT,
+                'price' => FILTER_DEFAULT,
                 'discount' => FILTER_DEFAULT,
                 'gender' => FILTER_DEFAULT,
                 'p_d' => FILTER_DEFAULT,
@@ -223,6 +225,10 @@ class SearchController extends AbstractAction
             if (isset($condition['misort'])) {
                 $condition['misort'] = rawurldecode($condition['misort']);
             }
+            // 转义价格
+            if (isset($condition['price'])) {
+                $condition['price'] = rawurldecode($condition['price']);
+            }
             // 转换折扣
             if (isset($condition['discount'])) {
                 $condition['p_d'] = rawurldecode($condition['discount']);
@@ -282,13 +288,14 @@ class SearchController extends AbstractAction
             // 过滤请求参数
             $condition = filter_input_array(INPUT_GET, array(
                 'query' => FILTER_DEFAULT,
-                'brand' => FILTER_VALIDATE_INT,
+                'brand' => FILTER_DEFAULT,
                 'sort' => FILTER_DEFAULT,
-                'msort' => FILTER_VALIDATE_INT,
-                'misort' => FILTER_VALIDATE_INT,
-                'color' => FILTER_VALIDATE_INT,
-                'size' => FILTER_VALIDATE_INT,
-                'price' => FILTER_VALIDATE_INT,
+                'msort' => FILTER_DEFAULT,
+                'misort' => FILTER_DEFAULT,
+                'color' => FILTER_DEFAULT,
+                'size' => FILTER_DEFAULT,
+                'style' => FILTER_DEFAULT,
+                'price' => FILTER_DEFAULT,
                 'discount' => FILTER_DEFAULT,
                 'gender' => FILTER_DEFAULT,
                 'p_d' => FILTER_DEFAULT,), false);
@@ -306,6 +313,10 @@ class SearchController extends AbstractAction
             if (isset($condition['gender'])) {
                 $condition['gender'] = rawurldecode($condition['gender']);
             }
+            // 转义价格
+            if (isset($condition['price'])) {
+                $condition['price'] = rawurldecode($condition['price']);
+            }
 
             // 区别各种列表页面的筛选数据
             $data = Product\SearchModel::getFilterData($condition);
diff --git a/yohobuy/m.yohobuy.com/application/modules/Product/controllers/Index.php b/yohobuy/m.yohobuy.com/application/modules/Product/controllers/Index.php
index b63510c..629cf02 100644
--- a/yohobuy/m.yohobuy.com/application/modules/Product/controllers/Index.php
+++ b/yohobuy/m.yohobuy.com/application/modules/Product/controllers/Index.php
@@ -25,17 +25,54 @@ class IndexController extends AbstractAction
     {
         // 过滤请求参数
         $condition = filter_input_array(INPUT_GET, array(
-            'brand' => FILTER_VALIDATE_INT,
+            'brand' => FILTER_DEFAULT,
             'sort' => FILTER_DEFAULT,
             'msort' => FILTER_DEFAULT,
             'misort' => FILTER_DEFAULT,
-            'color' => FILTER_VALIDATE_INT,
-            'size' => FILTER_VALIDATE_INT,
-            'price' => FILTER_VALIDATE_INT,
-            'discount' => FILTER_VALIDATE_INT,
+            'color' => FILTER_DEFAULT,
+            'size' => FILTER_DEFAULT,
+            'style' => FILTER_DEFAULT,
+            'price' => FILTER_DEFAULT,
+            'discount' => FILTER_DEFAULT,
             'gender' => FILTER_DEFAULT,
             'p_d' => FILTER_DEFAULT,), false);
 
+        // 转义品牌
+        if (isset($condition['brand'])) {
+            $condition['brand'] = rawurldecode($condition['brand']);
+        }
+        // 转义分类
+        if (isset($condition['sort'])) {
+            $condition['sort'] = rawurldecode($condition['sort']);
+        }
+        // 转义一级分类
+        if (isset($condition['msort'])) {
+            $condition['msort'] = rawurldecode($condition['msort']);
+        }
+        // 转义二级分类
+        if (isset($condition['misort'])) {
+            $condition['misort'] = rawurldecode($condition['misort']);
+        }
+        // 转义颜色
+        if (isset($condition['color'])) {
+            $condition['color'] = rawurldecode($condition['color']);
+        }
+        // 转义尺码
+        if (isset($condition['size'])) {
+            $condition['size'] = rawurldecode($condition['size']);
+        }
+        // 转义风格
+        if (isset($condition['style'])) {
+            $condition['style'] = rawurldecode($condition['style']);
+        }
+        // 转义价格
+        if (isset($condition['price'])) {
+            $condition['price'] = rawurldecode($condition['price']);
+        }
+        // 转换折扣
+        if (isset($condition['discount'])) {
+            $condition['p_d'] = rawurldecode($condition['discount']);
+        }
         // 性别参数,不传则从COOKIE获取
         if (!isset($condition['gender'])) {
             $condition['gender'] = Helpers::getGenderByCookie();
@@ -54,6 +91,7 @@ class IndexController extends AbstractAction
         if (!$condition) {
             $condition = array();
         }
+        print_r($condition);
         $goodList = $condition;
         $goodList['cartUrl'] = Helpers::url('/cart/index/index', null);
 
@@ -112,16 +150,49 @@ class IndexController extends AbstractAction
         /* 过滤请求参数 */
         $condition = filter_input_array(INPUT_GET, array(
             'sort' => FILTER_DEFAULT,
-            'msort' => FILTER_VALIDATE_INT,
-            'misort' => FILTER_VALIDATE_INT,
-            'color' => FILTER_VALIDATE_INT,
-            'size' => FILTER_VALIDATE_INT,
-            'price' => FILTER_VALIDATE_INT,
-            'discount' => FILTER_VALIDATE_INT,
+            'msort' => FILTER_DEFAULT,
+            'misort' => FILTER_DEFAULT,
+            'color' => FILTER_DEFAULT,
+            'size' => FILTER_DEFAULT,
+            'style' => FILTER_DEFAULT,
+            'price' => FILTER_DEFAULT,
+            'discount' => FILTER_DEFAULT,
             'gender' => FILTER_DEFAULT,
             'p_d' => FILTER_DEFAULT,), false);
         $condition['brand'] = $brandId;
-
+        
+        // 转义分类
+        if (isset($condition['sort'])) {
+            $condition['sort'] = rawurldecode($condition['sort']);
+        }
+        // 转义一级分类
+        if (isset($condition['msort'])) {
+            $condition['msort'] = rawurldecode($condition['msort']);
+        }
+        // 转义二级分类
+        if (isset($condition['misort'])) {
+            $condition['misort'] = rawurldecode($condition['misort']);
+        }
+        // 转义颜色
+        if (isset($condition['color'])) {
+            $condition['color'] = rawurldecode($condition['color']);
+        }
+        // 转义尺码
+        if (isset($condition['size'])) {
+            $condition['size'] = rawurldecode($condition['size']);
+        }
+        // 转义风格
+        if (isset($condition['style'])) {
+            $condition['style'] = rawurldecode($condition['style']);
+        }
+        // 转义价格
+        if (isset($condition['price'])) {
+            $condition['price'] = rawurldecode($condition['price']);
+        }
+        // 转换折扣
+        if (isset($condition['discount'])) {
+            $condition['p_d'] = rawurldecode($condition['discount']);
+        }
         if ($brandId === 0) {
             $condition['query'] = $domain;
         }
--
libgit2 0.24.0