多视图共享数据:
php artisan make:provider MulitiViewServiceProvider
然后在下面这个文件的boot方法里面加你要分享的数据,哪些视图需要共享这些数据,照着这个写就行了。
D:\phpStudy\WWW\BCCKidV1.0\app\Providers\MultiViewDataServiceProvider.php
public function boot()
{
#views文件夹下面的login,register,welcom,home都共享HelperController里面的getAllPhoneCode方法的结果
view()->composer(
['login', 'register', 'welcome', 'home'],
'App\Http\Controllers\HelperController@getAllPhoneCode'
);
#这里用闭包,也是可以的
view()->composer('dashboard', function ($view) {
return $view->with('data', [1, 2, 3]);
});
}
然后看看HelperController里面的getAllPhoneCode方法:
use Illuminate\View\View;
use Cache;
public function getAllPhoneCode(View $view)
{
#这里建议用缓存,因为很多地方都要用,数据也比较大
Cache::rememberForever('getAllPhoneCode', function () {
return Area::where('level', 2)
->where('phone_code', '!=', '')
->get(['english_name', 'phone_code'])
->toArrAy();
});
return $view->with('data',Cache::get('getAllPhoneCode'));
}
然后进入就可以看到数据已经渲染上去了。