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 相关文章推荐
基于qmail的完整WEBMAIL解决方案安装详解
Oct 09 PHP
基于mysql的论坛(4)
Oct 09 PHP
smarty巧妙处理iframe中内容页的代码
Mar 07 PHP
解析php开发中的中文编码问题
Aug 08 PHP
PHP读取大文件的类SplFileObject使用介绍
Apr 09 PHP
PHP命令行脚本接收传入参数的三种方式
Aug 20 PHP
php连接与操作PostgreSQL数据库的方法
Dec 25 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
Mar 16 PHP
php使用MySQL保存session会话的方法
Jun 18 PHP
php制作基于xml的RSS订阅源功能示例
Feb 08 PHP
自制PHP框架之模型与数据库
May 07 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 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生成sitemap.xml地图函数
2013/11/13 PHP
详解WordPress中给链接添加查询字符串的方法
2015/12/18 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
PHP数组Key强制类型转换实现原理解析
2020/09/01 PHP
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
2007/01/16 Javascript
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
Js日期选择自动填充到输入框(界面漂亮兼容火狐)
2013/08/02 Javascript
js获得地址栏?问号后参数的方法
2013/08/08 Javascript
javascript中call和apply方法浅谈
2013/09/27 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
NodeJS学习笔记之Connect中间件应用实例
2015/01/27 NodeJs
JavaScript  cookie 跨域访问之广告推广
2016/04/20 Javascript
d3.js实现简单的网络拓扑图实例代码
2016/11/06 Javascript
网页中的图片查看器viewjs使用方法
2017/07/11 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
vue 虚拟dom的patch源码分析
2018/03/01 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
[00:48]完美“圣”典2016风云人物:xiao8宣传片
2016/11/30 DOTA
python进阶_浅谈面向对象进阶
2017/08/17 Python
Python数据预处理之数据规范化(归一化)示例
2019/01/08 Python
python分数表示方式和写法
2019/06/26 Python
用Python写一个自动木马程序
2019/09/17 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
OpenCV利用python来实现图像的直方图均衡化
2020/10/21 Python
党员年终民主评议的自我评价
2013/11/05 职场文书
会计专业应届生自荐信
2014/02/07 职场文书
2015年药房工作总结
2015/04/25 职场文书
离婚案件答辩状
2015/05/22 职场文书
中秋节主题班会
2015/08/14 职场文书
品德与社会教学反思
2016/02/24 职场文书
详解Nginx 工作原理
2021/03/31 Servers
java实现面板之间切换功能
2022/06/10 Java/Android