首页 > 解决方案 > Laravel 根据类别显示产品视图

问题描述

这是我的 ShopController

        public function index()
    {
        if (request()->category) {
            $products = Product::with('categories')->whereHas('categories', function ($query) {
                $query->where('slug', request()->category);
            })->take(40)->paginate(9);
            

            $categories = Category::all();
        } else {
            $products = Product::inRandomOrder()->take(40)->paginate(9);
            $categories = Category::all();
        }

        return view('/pages/showroom')->with([
            'products' => $products,
            'categories' => $categories,
        ]); 
    }

    /**
     * Display a specified of the resource.
     *
     * @param string $slug
     * @return \Illuminate\Http\Response
     * 
     */
    public function show($slug)
    {
        $product = Product::where('slug', $slug)->firstOrFail();

        return view('/pages/product')->with('product', $product);
    }
}

我应该怎么做才能根据特定类别返回不同的视图(不仅仅是每个类别的一个视图)?

标签: laravel

解决方案


如果您的类别数量有限,您可以根据类别名称创建视图并返回动态视图而不是静态视图。

您的视图文件结构可能是这样的:

  • 页面

    • 产品

      • 类别-slug-1.blade.php

      • 类别-slug-2.blade.php

      • 类别-slug-3.blade.php

然后你应该像这样在你的控制器中返回视图

return view('pages.product.' . $slug)->with('product', $product);

推荐阅读