Laravel视图间共享数据,指定视图共享数据
一:所有视图间共享数据,Service Provider 定义服务类
1:在app\Providers目录下,把AppServiceProvider.php 复制一份,然后重命名,比如TopServiceProvider.php,也可以直接在AppServiceProvider.php中进行。
2:修改class 名称
3:注册服务提供者,打开config目录下的app.php,在里面添加刚才定义的服务类
/* * Application Service Providers... */ App\Providers\AppServiceProvider::class, App\Providers\AuthServiceProvider::class, // App\Providers\BroadcastServiceProvider::class, App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, App\Providers\TopServiceProvider::class, //这个是刚刚新加的4:打开app\Providers目录下的TopServiceProvider.php文件,在方法boot添加一句:
public function boot() { view()->share('name','李小龙'); }
这样在视图中就可以输出{{ $name }}
二:指定视图共享数据
1:上面的步骤不变,修改boot方法
public function boot()
{
view()->composer('web.main', function ($view) {
$data = '123';
$view->with('name',$data);
});
}
这里指定name在web.main视图中共享,其他视图获取不到。如果有多个视图加数组
public function boot()
{
view()->composer(['web.main','web.top'], function ($view) {
$data = '123';
$view->with('name',$data);
});
}
也可以用通配符,比如我要admin模块下所有视图都共享数据
public function boot()
{
view()->composer('admin.*', function ($view) {
$data = '123';
$view->with('name',$data);
});
}
这样,admin目录下所有的视图都共享了数据。
我的视图目录,web为前台,admin为后台。