Laravel框架给多个视图分配数据(5.5适用)
“
在项目中多个视图都使用到同一个数据,这是一个非常常见的一个需求。比如在由于前台的首页、商品详情页的头部都是公用的,需要就意味着首页视图、商品详情页视图都需要分配头部的数据
”

在项目中多个视图都使用到同一个数据,这是一个非常常见的一个需求。比如在由于前台的首页、商品详情页的头部都是公用的,需要就意味着首页视图、商品详情页视图都需要分配头部的数据。这个时候就需要给多个视图分配数据了。
以下假设需要将数据共享给 Home/index
以及 Home/user
视图
创建服务提供者
以下命令会在app/Providers
目录创建ShareUserDataProvider.php
php artisan make:provider ShareUserDataProvider
将上一步创建好的服务提供者,添加到配置文件中 在config.php/app.php配置文件中
'providers' => [
//其他服务提供器
App\Providers\ShareUserDataProvider::class,
],
在ShareUserDataProvider类文件中的boot方法
use Illuminate\Support\Facades\View;
View::composer(
//Home/index,Home/user 都是视图名
['Home/index', 'Home/user'], 'App\Http\ViewComposers\ProfileComposer'
);
创建 App\Http\ViewComposers\ProfileComposer
在app/Http
目录下创建一个ViewComposers
目录
mkdir ViewComposers
在 ViewComposers
目录下创建ProfileComposer
文件
touch ProfileComposer.php
//绑定数据到视图
public function compose(View $view)
{
//在视图中使用{{$count}}拿到aa
$view->with('count', 'aa');
//拿到UserApi类的test()方法的返回数据,并且分配到模板
$view->with('userdata', $this->user->test() );
}
视图被渲染前,Composer
类的 compose
方法被调用,同时 Illuminate\View\View
实例被注入该方法,从而可以使用其 with
方法来绑定数据到视图。
2