thinkPHP5框架中widget的功能与用法详解


Posted in PHP onJune 11, 2018

本文实例讲述了thinkPHP5框架中widget的功能与用法。分享给大家供大家参考,具体如下:

注意:使用助手函数return view()渲染,则挂件功能会失败,必须使用return $this->fetch()

我们在使用模板的时候,一般网站的顶部(比如说导航栏,或者用户登录区域等等),以及网站的尾部footer(比如友情链接或者版权说明等等),和body区域,我们会为了简化代码,都会将这三个部分剖开分离,然后通过模板继承的方式来使用.

但是如果顶部和尾部只是单纯的html代码还好说,但是里面通常有变量赋值和循环遍历以及判断等逻辑.

当然原始的方法就是我们在这两个区域里面使用原生的php代码来实现,但是这并不符合thinkphp5框架的理念,所以就早期的版本中就有widget这个东东,熟悉wordpress和yii框架的都非常熟悉,这个都是建成挂件,小部件的东西.

他可以非常方便的让你在网站某一区域设置包含变量循环等输出,比如广告模块,日历模块,等等.

下面就介绍如何在thinkphp5中简单的使用这项功能.

首先我们需要在模块目录下,简历widget目录,然后在里面建立Blog控制器,然后在index的方法中写下如下代码:

注意,代码中的Book为我自定义的模型,只是配合举例来用.

当然你可以继承Controller,也可以选择不继承,这取决于你使用框架的习惯,当然如果不继承,你需要使用view助手渲染模板.

代码的意思就是将模型Book中的数据取出,并赋值到模板中.

重点:$this->fetch();不要以为里面不写模板路径就会默认只想view视图下blog文件夹中的index视图,

在widget这里是不行的,必须填写对应视图路径

对应的视图路径为view视图下的blog目录下index.html,当然i你可以自定义视图名称

namespace app\index\widget;
use app\index\model\Book;
use think\Controller;
class Blog extends Controller
{
  public function index()
  {
    $list = Book::all();
    $this->assign('list',$list);
    return $this->fetch('widget/index');
  }
}

然后在view/blog/index.html中代码如下,仅作示例来用

在这里自定义输出遍历了指定内容

{volist name="list" id="v"}
<p>{$v.id}+{$v.bookname}</p>
{/volist}

你可以在实际应用中使用任何想需要的功能,比如说导航栏遍历输出,或者许多许多挂件模块

如何调用呢,你可以在你的指定视图模板中或者在继承的公共模板中使用以下

{:widget('Blog/index')} 这种方式来输出,Blog为widget目录下的控制器,index为控制器中的方法名

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport"
     content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <p>这里显示的默认主页输出内容</p>
  <p>如果widget使用正常,下面将输出遍历一个数据表的内容</p>
  {:widget('Blog/index')}
</body>
</html>

至此,完成输出以下页面!

这里显示的默认主页输出内容

如果widget使用正常,下面将输出遍历一个数据表的内容

1+weilai

2+yanyan

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP最常用的ini函数分析 针对PHP.ini配置文件
Apr 22 PHP
php include加载文件两种方式效率比较
Aug 08 PHP
批量获取memcache值并按key的顺序返回的实现代码
Jun 14 PHP
深入PHP数据加密详解
Jun 18 PHP
ThinkPHP验证码使用简明教程
Mar 05 PHP
Mac OS下配置PHP+MySql环境
Feb 25 PHP
9个比较实用的php代码片段
Mar 15 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
May 19 PHP
修改Laravel5.3中的路由文件与路径
Aug 10 PHP
PHP面向对象程序设计组合模式与装饰模式详解
Dec 02 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
Aug 06 PHP
php实现微信企业转账功能
Oct 02 PHP
thinkPHP5框架自定义验证器实现方法分析
Jun 11 #PHP
PHP绕过open_basedir限制操作文件的方法
Jun 10 #PHP
PHPMailer ThinkPHP实现自动发送邮件功能
Jun 10 #PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
Jun 09 #PHP
PHP实现二维数组中的查找算法小结
Jun 09 #PHP
PHP实现链表的定义与反转功能示例
Jun 09 #PHP
thinkPHP框架实现的无限回复评论功能示例
Jun 09 #PHP
You might like
PHP 中文乱码解决办法总结分析
2009/07/30 PHP
php面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
CodeIgniter使用smtp服务发送html邮件的方法
2015/06/10 PHP
php线性表的入栈与出栈实例分析
2015/06/12 PHP
smarty的section嵌套循环用法示例
2016/05/28 PHP
JavaScript包装对象使用介绍
2013/08/29 Javascript
jQuery filter函数使用方法
2014/05/19 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
2016/11/01 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
在create-react-app中使用css modules的示例代码
2018/07/31 Javascript
vue实现购物车案例
2020/05/30 Javascript
[02:29]DOTA2英雄基础教程 陈
2013/12/17 DOTA
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
Python实现图片滑动式验证识别方法
2017/11/09 Python
关于Python数据结构中字典的心得
2017/12/04 Python
python爬虫爬取淘宝商品信息
2018/02/23 Python
python贪吃蛇游戏代码
2020/04/18 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
python 使用多线程创建一个Buffer缓存器的实现思路
2020/07/02 Python
html5 标签
2009/07/16 HTML / CSS
澳大利亚首屈一指的在线购物目的地:Kogan.com
2017/02/02 全球购物
计算机毕业大学生推荐信
2013/12/01 职场文书
大学生作弊检讨书
2014/02/19 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
房屋认购协议书
2015/01/29 职场文书
留学推荐信英文范文
2015/03/26 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书
golang实现浏览器导出excel文件功能
2022/03/25 Golang
MySQL的存储过程和相关函数
2022/04/26 MySQL