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 相关文章推荐
一个程序下载的管理程序(一)
Oct 09 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
Aug 31 PHP
利用php绘制饼状图的实现代码
Jun 07 PHP
解析CodeIgniter自定义配置文件
Jun 18 PHP
php连接Access数据库错误及解决方法
Jun 20 PHP
php使用GD实现颜色渐变实例
Jun 02 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
Aug 23 PHP
PHP7正式版测试,性能惊艳!
Dec 08 PHP
php求数组全排列,元素所有组合的方法总结
Mar 14 PHP
Laravel5中Cookie的使用详解
May 03 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
PHP实现的ID混淆算法类与用法示例
Aug 10 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的安全
2006/10/09 PHP
php下实现在指定目录搜索指定类型文件的函数
2008/10/03 PHP
Zend framework处理一个http请求的流程分析
2010/02/08 PHP
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
腾讯CMEM的PHP扩展编译安装方法
2015/09/25 PHP
php出租房数据管理及搜索页面
2017/05/23 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
javascript实现的listview效果
2007/04/28 Javascript
jquery遍历table的tr获取td的值实现方法
2016/05/19 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
关于json字符串与实体之间的严格验证代码
2016/11/10 Javascript
微信小程序的动画效果详解
2017/01/18 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
JavaScript实现简单的树形菜单效果
2017/06/23 Javascript
JS监控关闭浏览器操作的实例详解
2017/09/12 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
vue中使用rem布局代码详解
2019/10/30 Javascript
python多线程抓取天涯帖子内容示例
2014/04/03 Python
python time模块用法实例详解
2014/09/11 Python
python三大神器之fabric使用教程
2019/06/10 Python
python3正则模块re的使用方法详解
2020/02/11 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
2020/03/10 Python
Python 多进程原理及实现
2020/12/21 Python
使用Canvas操作像素的方法
2018/06/14 HTML / CSS
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
梅西酒窖:Macy’s Wine Cellar
2018/01/07 全球购物
Sunglasses Shop瑞典:欧洲领先的太阳镜网上商店
2018/04/22 全球购物
改变生活的男士内衣:SAXX Underwear
2019/08/28 全球购物
新书发布会策划方案
2014/06/09 职场文书
学校清明节活动总结
2014/07/04 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
2014年采购员工作总结
2014/11/18 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
十二生肖观后感
2015/06/12 职场文书
mysql事务对效率的影响分析总结
2021/10/24 MySQL