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 相关文章推荐
thinkphp3查询mssql数据库乱码解决方法分享
Feb 11 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
Apr 01 PHP
ThinkPHP惯例配置文件详解
Jul 14 PHP
PHP中比较时间大小实例
Aug 21 PHP
thinkphp在模型中自动完成session赋值示例代码
Sep 09 PHP
php实现SAE上使用storage上传与下载文件的方法
Jun 29 PHP
CodeIgniter配置之config.php用法实例分析
Jan 19 PHP
汇总PHPmailer群发Gmail的常见问题
Feb 24 PHP
PHP合并数组函数array_merge用法分析
Feb 17 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
Apr 04 PHP
ecshop添加菜单及权限分配问题
Nov 21 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
Nov 10 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 htmlentities和htmlspecialchars 的区别
2008/08/18 PHP
Zend的MVC机制使用分析(一)
2013/05/02 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
Linux平台PHP5.4设置FPM线程数量的方法
2016/11/09 PHP
PHP+Ajax无刷新带进度条图片上传示例
2017/02/08 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
iis6+javascript Add an Extension File
2007/06/13 Javascript
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
jquery利用ajax调用后台方法实例
2013/08/23 Javascript
提高jQuery性能的十个诀窍
2013/11/14 Javascript
详解jquery中$.ajax方法提交表单
2014/11/03 Javascript
使用JavaScript+canvas实现图片裁剪
2015/01/30 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
2015/03/03 Javascript
JavaScript中字符串拼接的基本方法
2015/07/07 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
2016/01/21 Javascript
Vue服务器渲染Nuxt学习笔记
2018/01/31 Javascript
微信小程序中使用echarts的实现方法
2019/04/24 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
微信小程序云开发详细教程
2019/05/16 Javascript
Python求算数平方根和约数的方法汇总
2016/03/09 Python
使用requests库制作Python爬虫
2018/03/25 Python
python中class的定义及使用教程
2019/09/18 Python
python paramiko远程服务器终端操作过程解析
2019/12/14 Python
Django认证系统user对象实现过程解析
2020/03/02 Python
详解通过HTML5 Canvas实现图片的平移及旋转变化的方法
2016/03/22 HTML / CSS
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
一些PHP的面试题
2015/05/06 面试题
自荐信的禁忌和要点
2013/10/15 职场文书
社区学习十八大感想
2014/01/22 职场文书
行政主管职责范本
2014/03/07 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL