{{ $cqh }}
现在的要求是每个页面都会用到这个变量,如何共享这个数据呢?一般这样的操作我会在Laravel服务的boot方法里设置,下面介绍两种共享数据的方法方法一:使用View:share方法,如CqhServiceProvider里
html' target='_blank'>public function boot() { View::share('cqh','chenqionghe'); }这是使用外观模式,也可以直接使用view()方法,
view()->share('cqh', 'chenqionghe');方法二:使用composer方法单独对这个navigation.blade.php进行传送数据,方法如下
public function boot() { view()->composer('navigation', function ($view) { $view->with('cqh','chenqionghe'); }); }以上是使用闭包的形式来完成这个操作,其实这和路由一样,也可以用类来代替,Laravel里叫组件,方法如下
public function boot() { View::composer('navigation', 'App/Http/ViewComposers/MyViewComposer'); }上面这样就是注册了视图组件,并且在每次 navigation视图渲染的时候,MyViewComposer@compose 都将会被执行。下面我们来看这个组件怎么定义
<?php namespace App/Http/ViewComposers;use Illuminate/Contracts/View/View;class MyViewComposer{ public function compose(View $view) { $view->with('cqh','chenqionghe'); }}在视图被渲染之前,视图组件的 compose 方法就会被调用,并且传入一个 Illuminate/Contracts/View/View 实例。你可以使用 with 方法来把数据绑定到 view。注意:方法一和方法二其实是有区别的,方法一是对所有的视图都传递的cqh数据,而方法二只是对navigation视图传递了cqh数据如果方法二要达到方法一的效果,可以这样
View::composer('*', function($view){ //});这样就会对所有视图进行传递了也可以针对多个视图指定MyViewComposer组件
View::composer(['navigation', 'footer'], 'App/Http/ViewComposers/MyViewComposer');也可以使用 composers 方法来同时定义一群视图组件
View::composers([ 'App/Http/ViewComposers/AdminComposer' => ['admin.index', 'admin.profile'], 'App/Http/ViewComposers/UserComposer' => 'user', 'App/Http/ViewComposers/ProductComposer' => 'product']);PHP编程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答