Laravel 5 多个视图共享数据的方法
2018-01-26 18:24
543 查看
我们都知道模板一般会用到继承,导航栏就是一个很好的例子,但是导航栏的数据如何共享,比如有个导航的文件叫在view/navigation.blade.php
为了简单一点,文件里只有设置了一个变量
现在的要求是每个页面都会用到这个变量,如何共享这个数据呢?
一般这样的操作我会在Laravel服务的boot方法里设置,下面介绍两种共享数据的方法
方法一:使用View:share方法,如CqhServiceProvider里
这是使用外观模式,也可以直接使用view()方法,
方法二:使用composer方法单独对这个navigation.blade.php进行传送数据,方法如下
以上是使用闭包的形式来完成这个操作,其实这和路由一样,也可以用类来代替,Laravel里叫组件,方法如下
上面这样就是注册了视图组件,并且在每次 navigation视图渲染的时候,MyViewComposer@compose 都将会被执行。
下面我们来看这个组件怎么定义
在视图被渲染之前,视图组件的 compose 方法就会被调用,并且传入一个 Illuminate\Contracts\View\View 实例。你可以使用 with 方法来把数据绑定到 view。
注意:方法一和方法二其实是有区别的,方法一是对所有的视图都传递的cqh数据,而方法二只是对navigation视图传递了cqh数据
如果方法二要达到方法一的效果,可以这样
这样就会对所有视图进行传递了
也可以针对多个视图指定MyViewComposer组件
也可以使用 composers 方法来同时定义一群视图组件
为了简单一点,文件里只有设置了一个变量
现在的要求是每个页面都会用到这个变量,如何共享这个数据呢?
一般这样的操作我会在Laravel服务的boot方法里设置,下面介绍两种共享数据的方法
方法一:使用View:share方法,如CqhServiceProvider里
方法二:使用composer方法单独对这个navigation.blade.php进行传送数据,方法如下
下面我们来看这个组件怎么定义
注意:方法一和方法二其实是有区别的,方法一是对所有的视图都传递的cqh数据,而方法二只是对navigation视图传递了cqh数据
如果方法二要达到方法一的效果,可以这样
也可以针对多个视图指定MyViewComposer组件
也可以使用 composers 方法来同时定义一群视图组件
相关文章推荐
- Laravel 5 多个视图共享数据的方法
- Laravel 5 多个视图共享数据的方法
- Laravel5.4中视图共享数据
- Laravel学习笔记(二)---路由,CSRF,HTTP中间件,RESTFul风格控制器注册路由,视图间共享数据
- 详解Laravel视图间共享数据与视图Composer
- 详解Laravel视图间共享数据与视图Composer
- Laravel实现多个视图共享相同的数据
- 使用laravel开发网站时,如何实现前端导航栏共享数据二种简单的方法
- 控制器向视图传递数据的方法
- 视图间跳转完成数据回调的四种方法
- 视图间跳转完成数据回调的三种方法
- Java与php共享Memcached存储数据中的问题与解决方法
- laravel查询得到的数据(为对象object)无法进行数组循环遍历,而且不能用数组方式访问和查看的原因以及解决方法
- Echarts 数据视图 生成Excel的方法
- Android实现不同apk间共享数据的方法(2种方法)
- Android初级教程——实现共享优先数据方法 Shared Preferences
- 几种数据同步共享方法
- DLL共享数据方法
- SharePoint 2010 使用url参数过滤列表视图数据(使用get方法过滤列表数据)
- Laravel 5框架学习之向视图传送数据