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 来访国内外IP判断代码并实现页面跳转
Dec 18 PHP
php实现无限级分类实现代码(递归方法)
Jan 01 PHP
php文件上传表单摘自drupal的代码
Feb 15 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
May 07 PHP
php缩小png图片不损失透明色的解决方法
Dec 25 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
Jul 08 PHP
php使用Cookie实现和用户会话的方法
Jan 21 PHP
php多线程实现方法及用法实例详解
Oct 26 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
May 12 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
Aug 10 PHP
php实现微信模板消息推送
Mar 30 PHP
PHP __call()方法实现委托示例
May 20 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
一些操作和快捷键的理解和讨论
2020/03/04 星际争霸
php微信开发之上传临时素材
2016/06/24 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
网站上面有这种切换效果
2006/06/26 Javascript
c#和Javascript操作同一json对象的实现代码
2012/01/17 Javascript
IE不支持getElementsByClassName最终完美解决方案
2012/12/17 Javascript
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
2016/06/12 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
BootStrap Tooltip插件源码解析
2016/12/27 Javascript
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
微信小程序实现手势图案锁屏功能
2018/01/30 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
2018/07/22 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
2018/07/31 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
Vue退出登录时清空缓存的实现
2019/11/12 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
详细分析JavaScript中的深浅拷贝
2020/09/17 Javascript
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
点球小游戏python脚本
2018/05/22 Python
python pcm音频添加头转成Wav格式文件的方法
2019/01/09 Python
python基础梳理(一)(推荐)
2019/04/06 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
HTML5中drawImage用法分析
2014/12/01 HTML / CSS
违反校纪校规检讨书
2014/02/15 职场文书
《小蝌蚪找妈妈》教学反思
2014/02/21 职场文书
传承焦裕禄精神思想汇报2014
2014/09/10 职场文书
创业计划书之烤红薯
2019/09/26 职场文书
python 实现德洛内三角剖分的操作
2021/04/22 Python
vue cli4中mockjs在dev环境和build环境的配置详情
2022/04/06 Vue.js