From 1a5c345cc5abc7bb58fddd191010d9a7b65771ed Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Thu, 26 Dec 2024 14:42:55 +0800 Subject: [PATCH] fixed category filters --- .../src/Controllers/CategoryController.php | 58 +++++++++---------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/innopacks/front/src/Controllers/CategoryController.php b/innopacks/front/src/Controllers/CategoryController.php index 48cd59e8..663784d1 100644 --- a/innopacks/front/src/Controllers/CategoryController.php +++ b/innopacks/front/src/Controllers/CategoryController.php @@ -12,9 +12,7 @@ use App\Http\Controllers\Controller; use Exception; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Cache; use InnoShop\Common\Models\Category; -use InnoShop\Common\Models\Product; use InnoShop\Common\Repositories\CategoryRepo; use InnoShop\Common\Repositories\ProductRepo; @@ -44,13 +42,13 @@ public function index(Request $request): mixed * @param Request $request * @param Category $category * @return mixed + * @throws Exception */ public function show(Request $request, Category $category): mixed { - $slug = $category->slug; $keyword = $request->get('keyword'); - return $this->renderShow($slug, $keyword); + return $this->renderShow($category, $keyword, $request); } /** @@ -58,46 +56,44 @@ public function show(Request $request, Category $category): mixed * * @param Request $request * @return mixed + * @throws Exception */ public function slugShow(Request $request): mixed { - $slug = $request->slug; - $keyword = $request->get('keyword'); + $category = CategoryRepo::getInstance()->withActive()->builder(['slug' => $request->slug])->firstOrFail(); + $keyword = $request->get('keyword'); - return $this->renderShow($slug, $keyword); + return $this->renderShow($category, $keyword, $request); } /** - * @param $slug + * @param Category $category * @param $keyword + * @param Request $request * @return mixed + * @throws Exception */ - private function renderShow($slug, $keyword): mixed + private function renderShow(Category $category, $keyword, Request $request): mixed { - $cacheKey = cache_key('category', ['slug' => $slug, 'keyword' => $keyword]); - - return Cache::remember($cacheKey, 0, function () use ($slug, $keyword) { - $category = CategoryRepo::getInstance()->withActive()->builder(['slug' => $slug])->firstOrFail(); - $categories = CategoryRepo::getInstance()->getTwoLevelCategories(); + $categories = CategoryRepo::getInstance()->getTwoLevelCategories(); - $filters = [ - 'category_id' => $category->id, - 'keyword' => $keyword, - 'sort' => \request('sort'), - 'order' => \request('order'), - 'per_page' => \request('per_page'), - ]; - $products = ProductRepo::getInstance()->getFrontList($filters); + $filters = [ + 'category_id' => $category->id, + 'keyword' => $keyword, + 'sort' => $request->get('sort'), + 'order' => $request->get('order'), + 'per_page' => $request->get('per_page'), + ]; + $products = ProductRepo::getInstance()->getFrontList($filters); - $data = [ - 'slug' => $slug, - 'category' => $category, - 'categories' => $categories, - 'products' => $products, - 'per_page_items' => CategoryRepo::getInstance()->getPerPageItems(), - ]; + $data = [ + 'slug' => $category->slug ?? '', + 'category' => $category, + 'categories' => $categories, + 'products' => $products, + 'per_page_items' => CategoryRepo::getInstance()->getPerPageItems(), + ]; - return inno_view('categories.show', $data)->render(); - }); + return inno_view('categories.show', $data)->render(); } }