diff --git a/template/m.yohobuy.com/actions/index/search/filter.phtml b/template/m.yohobuy.com/actions/index/search/filter.phtml new file mode 100644 index 0000000..9767a69 --- /dev/null +++ b/template/m.yohobuy.com/actions/index/search/filter.phtml @@ -0,0 +1 @@ +{{> filter}} \ No newline at end of file diff --git a/yohobuy/m.yohobuy.com/application/controllers/Search.php b/yohobuy/m.yohobuy.com/application/controllers/Search.php index 95a7761..3673159 100644 --- a/yohobuy/m.yohobuy.com/application/controllers/Search.php +++ b/yohobuy/m.yohobuy.com/application/controllers/Search.php @@ -203,20 +203,9 @@ class SearchController extends AbstractAction // 转换排序方式 $page = $this->get('page', 1); - $order = $this->get('order', 0); + $orderVal = $this->get('order', 0); $type = $this->get('type', ''); - switch ($type) { - case 'price': - $order = ($order == 0) ? 's_p_desc' : 's_p_asc'; - break; - case 'discount': - $order = ($order == 0) ? 'p_d_desc' : 'p_d_asc'; - break; - case 'newest': - default: - $order = ($order == 0) ? 's_t_desc' : 's_t_asc'; - break; - } + $order = Helpers::transOrder($orderVal, $type); $data = array(); // 查询品类或品牌数据 @@ -258,6 +247,56 @@ class SearchController extends AbstractAction } /** + * Ajax异步获取筛选数据 + * @return array 筛选数据 + */ + public function filterAction() + { + if ($this->isAjax()) { + // 过滤请求参数 + $condition = filter_input_array(INPUT_GET, array( + 'query' => FILTER_DEFAULT, + 'brand' => FILTER_VALIDATE_INT, + '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_DEFAULT, + 'gender' => FILTER_DEFAULT, + 'p_d' => FILTER_DEFAULT,), false); + + if (isset($condition['sort'])) { + $condition['sort'] = rawurldecode($condition['sort']); + } + if (isset($condition['discount'])) { + $condition['p_d'] = rawurldecode($condition['discount']); + unset($condition['discount']); + } + if (isset($condition['gender'])) { + $condition['gender'] = rawurldecode($condition['gender']); + } + + $data = array(); + $listData = SearchData::searchByCondition($condition); + // 处理返回的数据 + if (isset($listData['data']) && isset($listData['data']['filter'])) { + $data['filter'] = ListProcess::getFilterData($listData['data']['filter']); + } + $listData = array(); + + if (empty($data)) { + echo ' '; + } else { + $this->_view->display('filter', $data); + } + } else { + echo ' '; + } + } + + /** * 模糊搜索指定字符 * * @return array 模糊搜索的结果