实际开发时,我们需要多个视图共享同一个数据,通常由下列三种方法

1、每个页面使用该数据都使用DB::all()获取数据 (不推荐)

缺点:每次都要在控制器中使用查询函数,过程繁琐不推荐

2、所有页面共享视图(推荐)

优点:过程简单方便(推荐)

方法如下:

(1)AppServiceProvider.php中

$topics = \App\Topic::all();
$posts = \App\Post::all;
\View::share(['topics'=>$topics,'posts'=>$posts]);

(2)在视图中直接使用变量即可

3、部分(全部)视图共享数据(推荐)

优点:过程简单方便(推荐)

方法如下:

(1)AppServiceProvider.php中

$topics = \App\Topic::all();
$posts = \App\Post::all;
View::composer(['user.index','post.index'],function ($view){
$view->with(['topics'=>$topics,'posts'=>$posts]);
})

//也可以向所有视图传递数据
View::composer('*',function ($view){
$view->with(['topics'=>$topics,'posts'=>$posts]);
})

(2)在视图中直接使用变量即可