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学习之 认清变量的作用范围
Jan 26 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
Oct 29 PHP
PHP中session变量的销毁
Feb 27 PHP
php采集内容中带有图片地址的远程图片并保存的方法
Jan 03 PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
Sep 22 PHP
php中注册器模式类用法实例分析
Nov 03 PHP
php实现遍历文件夹的方法汇总
Mar 02 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
Oct 23 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
May 29 PHP
详解PHP队列的实现
Mar 14 PHP
PHP+redis实现微博的推模型案例分析
Jul 10 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学习笔记 数组遍历实现代码
2011/06/09 PHP
php设计模式之命令模式的应用详解
2013/05/21 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
php使用cookie保存用户登录的用户名实例
2015/01/26 PHP
javascript函数声明和函数表达式区别分析
2014/12/02 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
js表头排序实现方法
2015/01/16 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
2016/02/17 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
详解vue父子组件间传值(props)
2017/06/29 Javascript
慕课网题目之js实现抽奖系统功能
2017/09/19 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
详解webpack 入门与解析
2018/04/09 Javascript
vue超时计算的组件实例代码
2018/07/09 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
[16:27]DOTA2 HEROS教学视频教你分分钟做大人-艾欧
2014/06/11 DOTA
python基础教程之python消息摘要算法使用示例
2014/02/10 Python
python解析xml文件实例分析
2015/05/27 Python
python抓取并保存html页面时乱码问题的解决方法
2016/07/01 Python
详谈python http长连接客户端
2017/06/12 Python
深入分析python中整型不会溢出问题
2018/06/18 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
Python flask框架端口失效解决方案
2020/06/04 Python
Python socket服务常用操作代码实例
2020/06/22 Python
使用AJAX和Django获取数据的方法实例
2020/10/25 Python
Currentbody澳大利亚:美容仪专家
2019/11/11 全球购物
咖啡书吧创业计划书
2014/01/13 职场文书
社区八一活动方案
2014/02/03 职场文书
爽歪歪广告词
2014/03/20 职场文书
公司联欢会策划方案
2014/05/19 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript