baseUrl = $this->url->get(['for' => 'home.course.list']); } public function handleTopCategories() { $params = $this->getParams(); if (isset($params['tc'])) { unset($params['tc']); } if (isset($params['sc'])) { unset($params['sc']); } $defaultItem = [ 'id' => 'all', 'name' => '全部', 'url' => $this->baseUrl . $this->buildParams($params), ]; $result = []; $result[] = $defaultItem; $categoryService = new CategoryService(); $topCategories = $categoryService->getChildCategories(CategoryModel::TYPE_COURSE, 0); foreach ($topCategories as $key => $category) { $params['tc'] = $category['id']; $result[] = [ 'id' => $category['id'], 'name' => $category['name'], 'url' => $this->baseUrl . $this->buildParams($params), ]; } return $result; } public function handleSubCategories() { $params = $this->getParams(); if (empty($params['tc'])) { return []; } $categoryService = new CategoryService(); $subCategories = $categoryService->getChildCategories(CategoryModel::TYPE_COURSE, $params['tc']); if (empty($subCategories)) { return []; } if (isset($params['sc'])) { unset($params['sc']); } $defaultItem = [ 'id' => 'all', 'name' => '全部', 'url' => $this->baseUrl . $this->buildParams($params), ]; $result = []; $result[] = $defaultItem; foreach ($subCategories as $key => $category) { $params['sc'] = $category['id']; $result[] = [ 'id' => $category['id'], 'name' => $category['name'], 'url' => $this->baseUrl . $this->buildParams($params), ]; } return $result; } public function handleModels() { $params = $this->getParams(); if (isset($params['model'])) { unset($params['model']); } $defaultItem = [ 'id' => 'all', 'name' => '全部', 'url' => $this->baseUrl . $this->buildParams($params), ]; $result = []; $result[] = $defaultItem; $models = CourseModel::modelTypes(); foreach ($models as $key => $value) { $params['model'] = $key; $result[] = [ 'id' => $key, 'name' => $value, 'url' => $this->baseUrl . $this->buildParams($params), ]; } return $result; } public function handleLevels() { $params = $this->getParams(); if (isset($params['level'])) { unset($params['level']); } $defaultItem = [ 'id' => 'all', 'name' => '全部', 'url' => $this->baseUrl . $this->buildParams($params), ]; $result = []; $result[] = $defaultItem; $levels = CourseModel::levelTypes(); foreach ($levels as $key => $value) { $params['level'] = $key; $result[] = [ 'id' => $key, 'name' => $value, 'url' => $this->baseUrl . $this->buildParams($params), ]; } return $result; } public function handleSorts() { $params = $this->getParams(); $result = []; $sorts = CourseModel::sortTypes(); foreach ($sorts as $key => $value) { $params['sort'] = $key; $result[] = [ 'id' => $key, 'name' => $value, 'url' => $this->baseUrl . $this->buildParams($params), ]; } return $result; } public function getParams() { $query = $this->request->getQuery(); $params = []; $validator = new CourseQueryValidator(); if (isset($query['tag_id'])) { $tag = $validator->checkTag($query['tag_id']); $params['tag_id'] = $tag->id; } if (isset($query['tc']) && $query['tc'] != 'all') { $category = $validator->checkCategory($query['tc']); $params['tc'] = $category->id; } if (isset($query['sc']) && $query['sc'] != 'all') { $category = $validator->checkCategory($query['sc']); $params['sc'] = $category->id; } if (isset($query['model']) && $query['model'] != 'all') { $params['model'] = $validator->checkModel($query['model']); } if (isset($query['level']) && $query['level'] != 'all') { $params['level'] = $validator->checkLevel($query['level']); } if (isset($query['sort'])) { $params['sort'] = $validator->checkSort($query['sort']); } return $params; } protected function buildParams($params) { return $params ? '?' . http_build_query($params) : ''; } }