提问者:小点点

使用Laravel控制器在不同页面上显示相同的项目


我已经使用laravel创建了一个web应用程序。该应用程序是博客网站和电子商务商店的组合。在索引页面上,我制作了一个博客控制器和产品控制器,在索引页面上分别显示博客的3个项目和产品的4个项目。现在,我还为博客创建了一个单独的页面,其中将显示网站中的所有博客(3个博客),并为产品创建了一个单独的页面,其中将显示所有产品(5本书)。

我想问一下,是否有一种方法可以使用同一控制器(products controller.)在索引页和产品页上显示不同数量的产品。通过使用循环或其他方式。

这是我用来在索引页上显示产品的代码,在索引页上显示4种产品。如果您有任何可以帮助我的资源,请链接它们。

Product::factory()->count(4)->create();

共1个答案

匿名用户

在创建任何类型的代码时使用DRY方法。

创建一个可重复使用的函数。

public function index(){
    $blogs = $this->getBlogs(3); //Parameterized getblogs() which return only 3 blogs
    $products = $this->getProducts(4); //Parameterized getProducts() which return only 4 products
    return view('index', compact('blogs', 'products'))
}


public function product_view() {
    $products = $this->getProducts(9);
    return view('product', compact('blogs', 'products'))
}

//this function required one integer value which be will use to fetch that number of products
//If this kind of function will be used by another class file then you should define this function in any service container or as a helper or In the model itself. so this function can be used by other classes as well.
public function getProducts(int $limit) {
    return Product::take($limit)->get()
}