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完整的日历类(CLASS)
Nov 27 PHP
PHP+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
Feb 15 PHP
新安装的MySQL数据库需要注意的安全知识
Jul 30 PHP
php相当简单的分页类
Oct 02 PHP
php split汉字
Jun 05 PHP
PHP array_push 数组函数
Dec 26 PHP
PHP操作XML作为数据库的类
Dec 19 PHP
discuz的php防止sql注入函数
Jan 17 PHP
巧用php中的array_filter()函数去掉多维空值的代码分享
Sep 07 PHP
PHP中round()函数对浮点数进行四舍五入的方法
Nov 19 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
Oct 21 PHP
php实现点击可刷新验证码
Nov 07 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
ThinkPHP采用模块和操作分析
2011/04/18 PHP
php读取纯真ip数据库使用示例
2014/01/26 PHP
php 伪静态之IIS篇
2014/06/02 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
2016/03/09 PHP
phpcms中的评论样式修改方法
2016/10/21 PHP
php中的buffer缓冲区用法分析
2019/05/31 PHP
Prototype1.6 JS 官方下载地址
2007/11/30 Javascript
JavaScript获取和设置CheckBox状态的简单方法
2013/07/05 Javascript
JavaScript调用后台的三种方法实例
2013/10/17 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
几种经典排序算法的JS实现方法
2016/03/25 Javascript
微信小程序实现列表页的点赞和取消点赞功能
2018/11/02 Javascript
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
2019/09/24 Javascript
微信小程序input抖动问题的修复方法
2021/03/03 Javascript
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
[57:38]2018DOTA2亚洲邀请赛3月30日 小组赛A组 OpTic VS OG
2018/03/31 DOTA
[03:12]完美世界DOTA2联赛PWL DAY7集锦
2020/11/06 DOTA
Python中的两个内置模块介绍
2015/04/05 Python
python出现&quot;IndentationError: unexpected indent&quot;错误解决办法
2017/10/15 Python
python的格式化输出(format,%)实例详解
2018/06/01 Python
opencv python统计及绘制直方图的方法
2019/01/21 Python
python实现祝福弹窗效果
2019/04/07 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
Python实现投影法分割图像示例(二)
2020/01/17 Python
Python实现上下文管理器的方法
2020/08/07 Python
css3弹性盒模型(Flexbox)详细介绍
2014/10/08 HTML / CSS
人事主管岗位职责范本
2013/12/04 职场文书
大二学期个人自我评价
2014/01/13 职场文书
物业客服专员岗位职责
2015/04/07 职场文书
幼儿园小班开学寄语
2015/05/27 职场文书
python中取整数的几种方法
2021/11/07 Python
奥特曼十大神器:奥特手镯在榜,第一是贝利亚的神器
2022/03/18 日漫
详解OpenCV获取高动态范围(HDR)成像
2022/04/29 Python
插件导致ECharts被全量引入的坑示例解析
2022/09/23 Javascript