如何将 Category::all(); 传递给每个视图。

10 浏览
0 Comments

如何将 Category::all(); 传递给每个视图。

我会在我的视图中频繁使用分类,有没有一种方法可以在每个视图中插入它,而不会出现"未定义变量:categories"的错误?

目前,我在每个视图中都是这样做的:

$categories=Category::all();
 return view('posts.create',compact('categories'));
$categories=Category::all();
 return view('posts.edit',compact('categories'));

以此类推...

0
0 Comments

如何将Category::all();传递给每个视图?

问题的原因:

在某些情况下,我们可能需要在每个视图中都传递相同的数据,而不是在每个控制器中重复加载数据。在这种情况下,我们可以使用视图合成器(view composer)来解决这个问题。

解决方法:

一种解决方法是在AppServiceProvider中添加一个视图合成器,并使用通配符*来表示所有视图。以下是示例代码:

View::composer(['*'], function ($view) {
    return $view->with([
        'categories' => Category::all(),
    ]);
});

通过将以上代码添加到AppServiceProvider的boot方法中,我们可以确保在每个视图中都能够访问categories变量。这样,我们就不需要在每个控制器中都加载Category::all()了。

这种方法的好处是,我们可以在一个地方定义数据,并确保它在每个视图中都可用。这样可以提高代码的可维护性和可读性,并减少代码的重复。

0
0 Comments

问题的原因:想要在每个视图中传递Category::all(),但是不知道如何实现。

解决方法:需要在AppServiceProvider中进行设置。

首先,在app\Providers\AppServiceProvider.php文件中,找到boot()方法。

然后,在该方法中添加以下代码:

public function boot()
{
  $categories=Category::all();
  $view->with('categories', $categories);    
}

这样,就可以在每个视图中传递Category::all()了。

0
0 Comments

问题出现的原因是需要在所有视图中传递Category::all()的数据。解决方法是在基础控制器的构造函数中添加以下代码:

$categories=Category::all();
View::share('categories', $categories);

这样就可以将$categories数据共享给所有的视图。在Laravel文档中可以找到更多的信息,链接如下:

[https://laravel.com/docs/7.x/views#sharing-data-with-all-views](https://laravel.com/docs/7.x/views#sharing-data-with-all-views)

0