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 相关文章推荐
一个oracle+PHP的查询的例子
Oct 09 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
Apr 17 PHP
ThinkPHP采用模块和操作分析
Apr 18 PHP
php处理文件的小例子(解压缩,删除目录)
Feb 03 PHP
php中过滤非法字符的具体实现
Oct 29 PHP
php计划任务之ignore_user_abort函数实现方法
Jan 08 PHP
Zend Framework入门知识点小结
Mar 19 PHP
Laravel SQL语句记录方式(推荐)
May 26 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
Nov 14 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
Jan 07 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
Dec 21 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 开源框架22个简单简介
2009/08/24 PHP
linux实现php定时执行cron任务详解
2013/12/24 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十一)
2014/06/25 PHP
php操作csv文件代码实例汇总
2014/09/22 PHP
php 如何获取文件的后缀名
2016/06/05 PHP
用javascript来实现动画导航效果的代码
2007/12/16 Javascript
Javascript 错误处理的几种方法
2009/06/13 Javascript
跟着JQuery API学Jquery 之三 筛选
2010/04/09 Javascript
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
2014/05/07 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
2014/11/20 NodeJs
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
2017/03/17 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
webpack+vue中使用别名路径引用静态图片地址
2017/11/20 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例
2019/09/11 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
JavaScript实现商品评价五星好评
2020/11/30 Javascript
Python实现线程池代码分享
2015/06/21 Python
Python中的一些陷阱与技巧小结
2015/07/10 Python
python实现Zabbix-API监控
2018/09/17 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
python字符串循环左移
2019/03/08 Python
python列表生成器迭代器实例解析
2019/12/19 Python
JD Sports丹麦:英国领先的运动时尚零售商
2020/11/24 全球购物
软件测试工程师面试问题精选
2016/10/28 面试题
初中班主任评语
2014/04/24 职场文书
班级联欢会主持词
2015/07/03 职场文书
关于销售人员的年终工作总结要点
2019/08/15 职场文书
python - timeit 时间模块
2021/04/06 Python