页面视图用于显示文档所有内容在整个页面的分布状况和整个文档在每一页上的位置,并可对其进行编辑操作,具有真正的“所见即所得”的显示效果,下面这篇文章主要给大家介绍了关于laravel多视图共享数据的相关资料,需要的朋友可以参考下
在做项目中,网站前台或者后台有些数据需要在多个视图页面使用,例如用户基本信息数据,菜单展示数据。首先想到的是在每个控制器里传入这些需要的数据,但显然这并不科学。经查视图文档了解,可以使用视图间共享数据和视图Composer解决。
有时候我们需要在所有视图之间共享数据片段,这时候可以使用视图工厂的 share 方法,通常,需要在服务提供者的 boot 方法中调用 share 方法,你可以将其添加到 AppServiceProvider 或生成独立的服务提供者来存放它们:
<?phpnamespace AppProviders;class AppServiceProvider extends ServiceProvider{/** * 启动所有应用服务 * * @return void */public function boot(){view()->share('name', 'dashuai');}/** * 注册服务提供者 * * @return void */public function register(){//}}
在各视图中使用 $name 即可调用。
视图Composer 是当视图被渲染时的回调或类方法。如果你有一些数据要在视图每次渲染时都做绑定,可以使用视图 Composer 将逻辑组织到一个单独的地方。
首先要在服务提供者中注册视图 Composer,我们将会使用辅助函数 view 来访问 IlluminateContractsViewFactory 的底层实现,记住,Laravel 不会包含默认的视图 Composer 目录,我们可以按照自己的喜好组织其路径,例如可以创建一个 AppHttpViewComposers 目录:
<?phpnamespace AppProviders;use IlluminateSupportServiceProvider;class ComposerServiceProvider extends ServiceProvider{/** * 在容器中注册绑定. * * @return void * @author http://laravelacademy.org */public function boot(){// 使用基于类的composers...view()->composer('profile', 'AppHttpViewComposersProfileComposer');// 使用基于闭包的composers...view()->composer('dashboard', function ($view) {});}/** * 注册服务提供者. * * @return void */public function register(){//}}
如果创建一个新的服务提供者来包含视图 Composer 注册,需要添加该服务提供者到配置文件 config/app.php 的 providers 数组中。
现在我们已经注册了 Composer,每次 profile 视图被渲染时都会执行 ProfileComposer@compose,接下来我们来定义该 Composer 类:
<?phpnamespace AppHttpViewComposers;use IlluminateContractsViewView;use IlluminateUsersRepository as UserRepository;class ProfileComposer{/** * 用户仓库实现. * * @var UserRepository */protected $users;/** * 创建一个新的属性composer. * * @param UserRepository $users * @return void */public function __construct(UserRepository $users){// Dependencies automatically resolved by service container...$this->users = $users;}/** * 绑定数据到视图. * * @param View $view * @return void */public function compose(View $view){$view->with('count', $this->users->count());}}
视图被渲染前,Composer 类的 compose 方法被调用,同时 IlluminateContractsViewView 被注入该方法,从而可以使用其 with 方法来绑定数据到视图。
你可以传递视图数组作为 composer 方法的第一个参数来一次性将视图 Composer 添加到多个视图:
view()->composer(['profile', 'dashboard'],'AppHttpViewComposersMyViewComposer');
composer 方法接受 * 通配符,从而允许将一个 Composer 添加到所有视图:
view()->composer('*', function ($view) {//});
到此这篇关于laravel多视图共享数据的文章就介绍到这了,更多相关laravel多视图共享数据内容请搜索一聚教程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持一聚教程网!
火柴人忍者3v3M0D版内置功能菜单 v5.5
下载重生细胞腾讯版 安卓版v3.5.2-bilibili-UO
下载拳皇命运体验服 最新免费版v2.31.000
下载地牢杀手无限生命版 内置修改器最新版v0.707.12
下载天天爱烹饪 安卓版1.1.1
天天爱烹饪是由润谦科技游戏厂商出品的美食烹饪餐厅模拟经营休闲
我的世界RLCraft任务汉化版 安卓版v2.9.1
我的世界RLCraft任务汉化版是一个非常有趣的整合包,游戏
光与夜之恋内测版 最新版v1.8.0803
光与夜之恋是一款女性向恋爱养成游戏,精美的画面,丰富的剧情故
光与夜之恋台服 安卓版v1.8.0803
光与夜之恋是一款高品质恋爱互动式养成游戏,超一线画师及豪华编
俄罗斯乡村模拟器3D 手机版v1.8.2
俄罗斯乡村模拟器(Russian Village Simul