ThinkPHP实现动态包含文件的方法


Posted in PHP onNovember 29, 2014

本文实例讲述了ThinkPHP实现动态包含文件的方法。分享给大家供大家参考。具体分析如下:

问题描述:在做项目的时候遇到问题,也是很常见的问题,一般主页包含头部和脚步,为了方便管理,这些都需要使用包含文件来实现,ThinkPHP提供了包含文件的方法,以上是最简单的包含的操作的方式,但是在运行的过程中我发现,在请求的时候只是请求的是模板文件,也就是所谓的静态包含,但是如果遇到菜单是动态生成的就很难办了.

在网上找到一个解决办法:使用Widget

1、我们在页面中实现一个分类显示的Widget,首先我们要实现我们首先定义一个Widget控制器层 CateWidget,如下:

class CateWidget extends Action {  

    public function menu(){  

        return 'menuWidget';  

    }  

}

注意是在Widget包中定义,和一般的Action还是有区别的

2、然后,我们在模版中通过R方法调用这个Widget(扩展Widget方式在模版中使用的是W方法),如果对R函数不了解的参考这里.(http://www.thinkphp.cn/info/134.html)

{:R('Cate/Menu','','Widget')}

执行后的输出结果是:menuWidget

3、如果,CateWidget类的menu方法改成:

class CateWidget extends Action {  

    public function menu(){  

        echo 'menuWidget';  

    }  

}

4、模版中的用法则需要改成:
{~R('Cate/Menu','','Widget')}

5、如果需要在调用Widget的时候 使用参数,可以这样定义:

class CateWidget extends Action {  

    public function menu($id,$name){  

        echo $id.':'.$name;  

    }  

}

6、模版中的参数调用,使用:
{:R('Cate/Menu',array(5,'thinkphp'),'Widget')}

则会输出 5:thinkphp

7、来一个复杂一点的例子:

class CateWidget extends Action {  

    public function menu(){  

        $menu = M('Cate')->getField('id,title');  

        $this->assign('menu',$menu);  

        $this->display('Cate:menu');  

    }  

}

8、CateWiget类渲染了一个模版文件Tpl/Cate/menu.html,调用模版的灵活也是使用这种方式实现Widget的区别(Widget扩展方式中需要调用renderFile方法渲染模版)。

在menu.html模版文件中的用法:{$key}:{$title}

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

PHP 相关文章推荐
一段php加密解密的代码
Oct 09 PHP
MySql 按时间段查询数据方法(实例说明)
Nov 02 PHP
php方法调用模式与函数调用模式简例
Sep 20 PHP
PHP flock 文件锁详细介绍
Dec 29 PHP
PHP CodeBase:将时间显示为"刚刚""n分钟/小时前"的方法详解
Jun 06 PHP
使用ThinkPHP+Uploadify实现图片上传功能
Jun 26 PHP
php中的观察者模式简单实例
Jan 20 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
Oct 08 PHP
PHP 数组基本操作方法详解
Jun 17 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
May 26 PHP
PHP中Static(静态)关键字功能与用法实例分析
Apr 05 PHP
浅谈如何提高PHP代码质量之单元测试
May 28 PHP
PHP静态文件生成类实例
Nov 29 #PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
Nov 29 #PHP
PHP实现的简单日历类
Nov 29 #PHP
PHP实现货币换算的方法
Nov 29 #PHP
php实现的树形结构数据存取类实例
Nov 29 #PHP
Codeigniter购物车类不能添加中文的解决方法
Nov 29 #PHP
ThinkPHP模版中导入CSS和JS文件的方法
Nov 29 #PHP
You might like
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
2008/09/10 PHP
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
教你如何解密 “ PHP 神盾解密工具 ”
2014/06/20 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
php中smarty模板条件判断用法实例
2015/06/11 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
2016/06/21 PHP
php 二维数组快速排序算法的实现代码
2017/10/17 PHP
FileUpload 控件 禁止手动输入或粘贴的实现代码
2010/04/07 Javascript
brook javascript框架介绍
2011/10/10 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
微信小程序 聊天室简单实现
2017/04/19 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
canvas基础绘制-绚丽倒计时的实例
2017/09/17 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
基于vue展开收起动画的示例代码
2018/07/05 Javascript
vue用Object.defineProperty手写一个简单的双向绑定的示例
2018/07/09 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
python的urllib模块显示下载进度示例
2014/01/17 Python
Python 创建新文件时避免覆盖已有的同名文件的解决方法
2018/11/16 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
python文件操作的简单方法总结
2019/11/07 Python
python中reload重载实例用法
2020/12/15 Python
世界上最大的售后摩托车零配件超市:J&P Cycles
2017/12/08 全球购物
交通法规咨询中心工作职责
2013/11/27 职场文书
网上商城创业计划书范文
2014/01/31 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
工程部部长岗位职责
2015/02/12 职场文书
慰问信范文
2015/02/14 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
MySQL深度分页(千万级数据量如何快速分页)
2021/07/25 MySQL
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers
centos7安装mysql5.7经验记录
2022/05/02 Servers