为什么要把两个框架放在一起来说呢?额。。。因为TP5.1.x与Laravel实在是太像了,本文主要讲述关于大家顶部及底部文件引入的问题。

但是如果顶部和尾部只是单纯的html代码还好说,但是里面通常有变量赋值和循环遍历以及判断等逻辑,这样就带来了比较麻烦的事情。

首先讲下Laravel框架主要利用AppServiceProvider文件中的boot方法进行全局变量分配。

也就说在boot方法直接加载header模版文件顺便分配变量到模版中,

那么无论在其他视图那个地方引入这个公共模版文件都可以直接使用,而不会报变量未找到的错误。

具体操作:

找到app/Providers/AppServiceProvider.php文件,在boot方法中加载公共头部模版,比如说:namespace App\Providers;

use Illuminate\Support\ServiceProvider;

use DB;

class AppServiceProvider extends ServiceProvider

{

/**

* Bootstrap any application services.

*

* @return void

*/

public function boot()

{

//

$res = DB::table("eq_type")->where("ishidden", "=", "1")->get(); //取出分类列表

view()->share(['header' => $res]); //分配变量到头部公共导航

}

/**

* Register any application services.

*

* @return void

*/

public function register()

{

//

}

}

后面就直接在其他视图成引入头部导航文件即可@include("template/default/header")

OK,那么ThinkPHP能用这种方式吗?NO!虽然他们很像,但是也不是真的一模一样好吧,TP框架除了5.1新出的layout可以尝试达到类似效果,还有一个延续3.2版本下来的好东西,

也是接下来要讲的分层控制器,利用分层控制器机制来实现widget,也就是在模版中调用分层控制器,常规的路由是无法访问到的,相比了解Yii框架的朋友都熟悉这个吧,就是挂件功能的概念。

首先,我们需要在模块目录下新建一个widget目录(与controller目录同级目录),然后在里面新建控制器header(表示这是头部的文件),然后在index方法下写如下代码:

重点1:不能使用助手函数view直接渲染模版,否则挂件失败!

重点2:$this->fetch(); 千万不要以为里面不写模版路径,系统会自动帮你默认,那是不可能的!必须写对应的视图路径!<?php

namespace app\Admin\widget;

use think\Controller;

class header extends Controller

{

public function index()

{

$this->assign('title','添加账户'); //分配变量

return $this->fetch('admin/header'); //渲染模版

}

}

在其他视图层使用:{:widget('header/index')}

其中header是widget目录下的控制器,index是控制器下的方法!

tp框架中引入php文件,Laravel框架及ThinkPHP框架超级简单的公共文件引入(保留变量)...相关推荐

  1. 在thinkphp框架中如何对多表进行操作(thinkphp多表查询方法)

    在thinkphp框架中如何对多表进行操作(thinkphp多表查询方法) 本文讲解了在thinkphp框架中如何对多表进行操作,ThinkPHP是一个开源的PHP框架,是为了简化企业级应用开发和敏捷 ...

  2. 【python】tensorflow框架中的tf.gather_nd()函数对应的 pytorch框架的gather_nd()函数

    tf.gather_nd 函数对应的pytorch函数 1. 简单介绍 2. 步入正题 2.1 tensorflow tf.gather_nd() 2.2 pytorch框架手动实现gather_nd ...

  3. Qt中pri文件介绍及使用(图文超级简单!!)

    初衷是把额外用到的一些自定义组件放在一个文件中,方便调用.新手学东西真的是费时费力 网上 搜索了一番 没有太完整的解决方案 所以参考整理了一下 分为介绍和使用两部分(图文) --介绍 我们可以把 *. ...

  4. 超级简单的头文件制作

    仅适用于Dev-C++ 目录 1.新建一个原代码 2.在打开的文件中加入自己的函数 3.保存为.h文件 4.更改.h文件位置 5.使用自己做的头文件 1.新建一个原代码 打开Dev-C++,点击 &q ...

  5. matlab中矩阵点乘和乘的区别(超级简单)

    matlab中矩阵点乘和乘的区别 MATLAB中, 一.矩阵相乘:表示两个矩阵相乘. 二.矩阵点乘:表示矩阵中对应位置的元素分别相乘. 三.举例 3.1 矩阵相乘 3.2 矩阵点乘 MATLAB中, ...

  6. Laravel框架中使用Service模式

    Laravel框架中使用 Presenter 模式 Laravel框架中使用 Repository 模式 Laravel的中大型项目构架和优雅的插件扩展l5-repository 若将商业逻辑都写在c ...

  7. 在yog2框架中自建模块,以实现socket.io与express共享session中间件

    导引 最近遇到了一个需要在yog2框架中增加websocket服务的案子,此文主要讲在案子过程中碰到的一些问题和解决方案 前言 一.如果你只是想要解决socket.io与express共享解析sess ...

  8. python定制框架知识点_python框架中flask知识点总结

    有很久没有更新我的博客了,在学习flask去了,别人都说flask不难,其实现在我也这么觉得,但是在刚接触的时候还是有点吃力的. 在学习的过程中查阅了不少,也了解了许多,今天想做个总结...以免觉得学 ...

  9. vue框架中使用高德地图自定义icon问题

    ** vue框架中使用高德地图自定义icon问题 ** vue框架中使用高德地图自定义icon,在编译时,因为图片会有封装问题等,但是在高德地图中没有转化对应的路径,在最后结果中会出现找不到图标的问题 ...

最新文章

  1. VS2008常用快捷键
  2. Open Source Blog 开源ASP.NET/C# 博客平台 v2.5 发布(提供源码下载)
  3. (私人收藏)python学习(游戏、爬虫、排序、练习题、错误总结)
  4. 领域应用 | 美团商品知识图谱的构建及应用
  5. java界面编辑教程_java程序设计基础教程第六章图形用户界面编辑.docx
  6. 动态规划 —— 背包问题 P06 —— 分组背包
  7. bzoj3944 Sum 杜教筛
  8. 整数输入有理循环小数 1/7 = 0.142857142... 是个无限循环小数。 任何有理数都可以表示为无限循环小数的形式。 本题目要求即是:给出一个数字的循环小数表示法。...
  9. 尝试在Community Server中添加一个页面
  10. Windows10更改电脑用户名
  11. 计算机设备灯光有哪些,多媒体教室主要有哪些设备?
  12. mysql 查询替换语句_MYSQL查询字符替换sql语句
  13. 购物网站 前台后台 思维导图_「培哥学堂」60套思维导图PPT送给你,让你的工作事半功倍!(建议收藏)...
  14. Word处理控件Aspose.Words功能演示:在C#中将DOC或DOCX转换为HTML
  15. 12306验证码图片获取
  16. nc命令应用场景及使用
  17. 我本将心向明月,奈何明月照沟渠
  18. excel表格生成图片的方式
  19. 读博士学位失败率有多高
  20. Oracle 12cR1 RAC 在VMware Workstation上安装(上)—OS环境配置

热门文章

  1. java 集成 kafka 0.8.2.1 适配jdk1.6
  2. Vue计算属性、方法、侦听器
  3. Beetl 模板引擎学习
  4. 企业实战(Jenkins+GitLab+SonarQube)_04_Jenkins安装推荐插件
  5. VBA IsNull 应用 - 捕获错误并查找未填充的值
  6. Java-Scanner进阶使用
  7. jq之$(“a[target=‘_blank‘]“)
  8. emlog_toolkit.php,emlog 4.0版本IIS6下伪静态划定规矩
  9. scanf()函数错误把输入缓存里的回车作为一次字符输入
  10. java类中获取全局变量_java 通过反射获取类的全局变量、方法、构造方法