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 相关文章推荐
smarty section简介与用法分析
Oct 03 PHP
php下封装较好的数字分页方法
Nov 23 PHP
fleaphp crud操作之find函数的使用方法
Apr 23 PHP
探讨PHP中OO之静态关键字以及类常量的详解
Jun 07 PHP
php如何解决无法上传大于8M的文件问题
Mar 10 PHP
php支付宝接口用法分析
Jan 04 PHP
PHP IDE phpstorm 常用快捷键
May 18 PHP
使用Thinkphp框架开发移动端接口
Aug 05 PHP
PHP的全局错误处理详解
Apr 25 PHP
YII2框架中excel表格导出的方法详解
Jul 21 PHP
利用php操作memcache缓存的基础方法示例
Aug 02 PHP
php之可变函数的实例详解
Sep 13 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
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
PHP实现的封装验证码类详解
2013/06/18 PHP
微信API接口大全
2015/04/15 PHP
PHP调用微博接口实现微博登录的方法示例
2018/09/22 PHP
PHP中quotemeta()函数的用法讲解
2019/04/04 PHP
jquery 学习之二 属性(类)
2010/11/25 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
javascript中数组的concat()方法使用介绍
2013/12/18 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
2015/07/29 Javascript
javascript发送短信验证码实现代码
2015/11/12 Javascript
Js遍历键值对形式对象或Map形式的方法
2016/08/08 Javascript
关于javascript原型的修改与重写(覆盖)差别详解
2016/08/31 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
Python使用poplib模块和smtplib模块收发电子邮件的教程
2016/07/02 Python
Python数据分析库pandas基本操作方法
2018/04/08 Python
Python 日期区间处理 (本周本月上周上月...)
2019/08/08 Python
python 通过视频url获取视频的宽高方式
2019/12/10 Python
PyTorch中的Variable变量详解
2020/01/07 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
2020/09/20 Python
python import 上级目录的导入
2020/11/03 Python
python tkinter实现连连看游戏
2020/11/16 Python
详解python中的异常捕获
2020/12/15 Python
css3中新增的样式使用示例附效果图
2014/08/19 HTML / CSS
用CSS3绘制三角形的简单方法
2015/07/17 HTML / CSS
探矿工程师自荐信
2014/01/24 职场文书
英语专业自荐书
2014/06/13 职场文书
2016新年年会主持词
2015/07/06 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
安全责任协议书范本
2016/03/23 职场文书
豆瓣2021评分最高动画剧集-豆瓣评分最高的动画剧集2021
2022/03/18 日漫
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers