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简单系统查询模块代码打包下载
Jun 07 PHP
基于PHP5魔术常量与魔术方法的详解
Jun 13 PHP
探讨:parse url解析URL,返回其组成部分
Jun 14 PHP
PHP字符串长度计算 - strlen()函数使用介绍
Oct 15 PHP
php筛选不存在的图片资源
Apr 28 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
Jan 09 PHP
PHP简单读取PDF页数的实现方法
Jul 21 PHP
php 判断字符串编码是utf-8 或gb2312实例
Nov 01 PHP
php实现简单加入购物车功能
Mar 07 PHP
PHP实现验证码校验功能
Nov 16 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
PHP数组实际占用内存大小原理解析
Dec 11 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
php二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
两级联动select刷新后其值保持不变的实现方法
2014/01/27 PHP
PHP延迟静态绑定示例分享
2014/06/22 PHP
php判断访问IP的方法
2015/06/19 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
javascript 混合的构造函数和原型方式,动态原型方式
2009/12/07 Javascript
Jquery 常用方法经典总结
2010/01/28 Javascript
jQuery为iframe的body添加click事件的实现代码
2011/04/07 Javascript
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
2014/12/18 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
JavaScript模拟push
2016/03/06 Javascript
JS日程管理插件FullCalendar简单实例
2017/02/07 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
layui获取多选框中的值方法
2018/08/15 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
vue+elementUI实现图片上传功能
2019/08/20 Javascript
python实现定时同步本机与北京时间的方法
2015/03/24 Python
python实现俄罗斯方块游戏
2020/03/25 Python
python3.6下Numpy库下载与安装图文教程
2019/04/02 Python
Python类继承和多态原理解析
2020/02/05 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
2020/04/20 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
django 外键创建注意事项说明
2020/05/20 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
2020/05/28 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
利用Python实现学生信息管理系统的完整实例
2020/12/30 Python
光声世纪笔试题目
2012/08/25 面试题
宾馆安全管理制度
2015/08/06 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
MySQL kill不掉线程的原因
2021/05/07 MySQL
python获取对象信息的实例详解
2021/07/07 Python
MySQL中的全表扫描和索引树扫描
2022/05/15 MySQL