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中的Class的几点个人看法
Oct 09 PHP
BBS(php & mysql)完整版(五)
Oct 09 PHP
PHP 编程安全性小结
Jan 08 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
Feb 22 PHP
基于php伪静态的实现详细介绍
Apr 28 PHP
ThinkPHP模板中数组循环实例
Oct 30 PHP
php文件读取方法实例分析
Jun 20 PHP
PHP自定义错误用法示例
Sep 28 PHP
PHP二进制与字符串之间的相互转换教程
Oct 14 PHP
php实现网页上一页下一页翻页过程详解
Jun 28 PHP
PHP使用递归按层级查找数据的方法
Nov 10 PHP
PHPstorm激活码2020年5月13日亲测有效
Sep 17 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
造就帕卡马拉的帕卡斯是怎么被发现的
2021/03/03 咖啡文化
最简单的PHP程序--记数器
2006/10/09 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
2013/06/29 PHP
php导入csv文件碰到乱码问题的解决方法
2014/02/10 PHP
php集成环境xampp中apache无法启动问题解决方案
2014/11/18 PHP
linux下php上传文件注意事项
2016/06/11 PHP
jquery.cookie.js使用指南
2015/01/05 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
Bootstrap每天必学之面板
2015/11/30 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
Angular2中select用法之设置默认值与事件详解
2017/05/07 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
JS实现的新闻列表自动滚动效果示例
2019/01/30 Javascript
深入理解react 组件类型及使用场景
2019/03/07 Javascript
详解Vue demo实现商品列表的展示
2019/05/07 Javascript
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
python的绘图工具matplotlib使用实例
2014/07/03 Python
python实现爬取千万淘宝商品的方法
2015/06/30 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
2017/07/27 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
2018/04/21 Python
python opencv实现运动检测
2018/07/10 Python
python多行字符串拼接使用小括号的方法
2020/03/19 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
产品销售员岗位职责
2013/12/18 职场文书
欢迎家长标语
2014/10/08 职场文书
领导干部群众路线教育实践活动剖析材料
2014/10/10 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
元旦主持词开场白
2015/05/29 职场文书
企业内部管理控制:银行存款控制制度范本
2020/01/10 职场文书
WordPress多语言翻译插件 - WPML使用教程
2021/04/01 PHP
用position:sticky完美解决小程序吸顶问题的实现方法
2021/04/24 HTML / CSS
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android