Laravel向公共模板赋值方法总结


Posted in PHP onJune 25, 2019

开发过程中许多时候都会向公共模板赋值,比如顶部导航栏,页面底部等等,不可能在每个控制器中都赋值一遍。

Laravel 中解决办法如下: 修改

App\Providers\AppServiceProvider

在boot方法中添加

View()->composer('common.header',function ($view){ //common.header 对应Blade模板 $view->with('key', 'value'); });

也可以向所有模板中赋值

View()->share('key', 'value');

view composers 与视图有关,用在一个service provider 的boot()函数里,就是让一个view加载的时候,由于view composer的作用,去调用某个函数传个参啊啥的。

1,创建service provider

php artisan make:provider ComposerServiceProvider

再把ComposerServiceProvider加到config/app.php里面

2,写view composer

public function boot()  {    view()->composer(      'app', //模板名      'App\Http\ViewComposers\MovieComposer' //方法名或者类中的方法    );  }

意思是一旦加载app.blade.php,就执行App\Http\ViewComposers\MovieComposer里的composer函数(这里之所以执行composer函数是默认的),如果你想换一个就

view()->composer('app','App\Http\ViewComposers\MovieComposer@foobar'); //自己定义的方法

这里就执行foobar函数了

App\Http\ViewComposers\MovieComposer.php里这么写

<?phpnamespace App\Http\ViewComposers;use Illuminate\View\View;//**记得引入这个啊(因为在composer函数参数里使用了View类)**class MovieComposer{  public $movieList = [];  public function __construct()  {    $this->movieList = [      'Shawshank redemption',      'Forrest Gump',    ];  }  public function compose(View $view)  {    $view->with('latestMovie');  }}

3,其他 当所有模板都要,用*正则表达式

view()->composer('*', function (View $view) {  //logic goes here});

想要指定多个view使用,用数组包起来

view()->composer(['nav', 'footer'],'App\Http\ViewComposers\MovieComposer');或者 view()->composer(['admin.admin'], function ($view){      $column = $this->object_array(DB::table('column')->get());      foreach($column as $k=>$v){        $chid = explode(',',$v['childid']);        foreach($chid as $value){          $column[$k]['chname'][] = $this->object_array(DB::table('column_child')->where('id',$value)->first());        }      }      $view->with('columns',$column);    });
PHP 相关文章推荐
一步一步学习PHP(4) php 函数 补充2
Feb 15 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
Mar 17 PHP
PHP也能干大事 随机函数
Apr 14 PHP
PHP 常用的header头部定义汇总
Jun 19 PHP
学习php设计模式 php实现状态模式
Dec 07 PHP
WordPress中注册菜单与调用菜单的方法详解
Dec 18 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
Nov 09 PHP
php导出csv文件,可导出前导0实例代码
Nov 16 PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 PHP
laravel-admin自动生成模块,及相关基础配置方法
Oct 08 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
Oct 30 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
May 02 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 25 #PHP
PHP中遍历数组的三种常用方法实例分析
Jun 24 #PHP
php字符串过滤strip_tags()函数用法实例分析
Jun 24 #PHP
提高Laravel应用性能方法详解
Jun 24 #PHP
PHP二维索引数组的遍历实例分析【2种方式】
Jun 24 #PHP
PHP中的self关键字详解
Jun 23 #PHP
php面向对象程序设计入门教程
Jun 22 #PHP
You might like
松下Panasonic RF-B65电路分析
2021/03/02 无线电
网站用php实现paypal整合方法
2010/11/28 PHP
jQuery 渐变下拉菜单
2009/12/15 Javascript
jQuery/CSS3图片特效插件整理推荐
2014/12/07 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
jQuery跨域问题解决方案
2015/08/03 Javascript
在JavaScript中如何解决用execCommand(
2015/10/19 Javascript
深入浅析JavaScript中prototype和proto的关系
2015/11/15 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
AngularJS实现表单验证功能详解
2017/10/12 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
微信小程序按顺序同步执行的两种方式
2019/12/20 Javascript
vue el-tree 默认展开第一个节点的实现代码
2020/05/15 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
python自动安装pip
2014/04/24 Python
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
python下的opencv画矩形和文字注释的实现方法
2019/07/09 Python
聊聊python在linux下与windows下导入模块的区别说明
2021/03/03 Python
css3与html5实现响应式导航菜单(导航栏)效果分享
2014/02/12 HTML / CSS
三字经教学反思
2014/04/26 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
名人演讲稿范文
2014/09/16 职场文书
2014年光棍节活动策划方案(创意集锦)
2014/09/29 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
学校教师师德师风承诺书
2015/04/28 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
企业管理制度设计时要注意的几种“常见病”!
2019/04/19 职场文书
Python 处理表格进行成绩排序的操作代码
2021/07/26 Python
MySQL数据库如何给表设置约束详解
2022/03/13 MySQL
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android