laravel 实现向公共模板中传值 (view composer)


Posted in PHP onOctober 22, 2019

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里这么写

<?php

namespace 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);
  });

以上这篇laravel 实现向公共模板中传值 (view composer)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
最小化数据传输――在客户端存储数据
Oct 09 PHP
PHP4实际应用经验篇(3)
Oct 09 PHP
php 修改zen-cart下单和付款流程以防止漏单
Mar 08 PHP
PHP中实现中文字符进制转换原理分析
Dec 06 PHP
mysql数据库差异比较的PHP代码
Feb 05 PHP
Laravel中使用阿里云OSS Composer包分享
Feb 10 PHP
PHP使用递归生成文章树
Apr 21 PHP
php+mysql实现简单的增删改查功能
Jul 13 PHP
thinkPHP下ueditor的使用方法详解
Dec 26 PHP
PHP中的多种加密技术及代码示例解析
Oct 20 PHP
一键生成各种尺寸Icon的php脚本(实例)
Feb 08 PHP
PHP PDO数据库操作预处理与注意事项
Mar 16 PHP
浅谈laravel数据库查询返回的数据形式
Oct 21 #PHP
在laravel中实现将查询的对象转换为多维数组的函数
Oct 21 #PHP
Laravel5.5 视图 - 创建视图和数据传递示例
Oct 21 #PHP
laravel orm 关联条件查询代码
Oct 21 #PHP
浅谈laravel orm 中的一对多关系 hasMany
Oct 21 #PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
Oct 21 #PHP
Laravel ORM 数据model操作教程
Oct 21 #PHP
You might like
YB217、YB235、YB400浅听
2021/03/02 无线电
php读取大文件示例分享(文件操作类)
2014/04/13 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
javascript学习笔记(五)原型和原型链详解
2014/10/08 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
2015/12/13 Javascript
webix+springmvc session超时跳转登录页面
2016/10/30 Javascript
vue双向绑定简要分析
2017/03/23 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
jquery版轮播图效果和extend扩展
2017/07/18 jQuery
js学习总结之DOM2兼容处理this问题的解决方法
2017/07/27 Javascript
vue中选项卡点击切换且能滑动切换功能的实现代码
2018/11/25 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
javascript异常处理实现原理详解
2020/02/17 Javascript
功能完善的小程序日历组件的实现
2020/03/31 Javascript
JS实现手写 forEach算法示例
2020/04/29 Javascript
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
[52:36]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[03:35]2018年度DOTA2最佳辅助位选手5号位-完美盛典
2018/12/17 DOTA
使用graphics.py实现2048小游戏
2015/03/10 Python
Python numpy 点数组去重的实例
2018/04/18 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
pycharm如何设置官方中文(如何汉化)
2020/12/29 Python
SQL SERVER面试资料
2013/03/30 面试题
接收函格式
2015/01/30 职场文书
红色影片观后感
2015/06/18 职场文书
筑梦中国心得体会
2016/01/18 职场文书
使用tensorflow 实现反向传播求导
2021/05/26 Python
Python中的np.argmin()和np.argmax()函数用法
2021/06/02 Python
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫