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 相关文章推荐
BBS(php & mysql)完整版(二)
Oct 09 PHP
php access 数据连接与读取保存编辑数据的实现代码
May 12 PHP
php fsockopen中多线程问题的解决办法[翻译]
Nov 09 PHP
ThinkPHP CURD方法之field方法详解
Jun 18 PHP
php保存二进制原始数据为图片的程序代码
Oct 14 PHP
smarty模板引擎从php中获取数据的方法
Jan 22 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
Mar 26 PHP
php文件读取方法实例分析
Jun 20 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
Jan 09 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
Mar 23 PHP
深入理解PHP之OpCode原理详解
Jun 01 PHP
Yii2框架dropDownList下拉菜单用法实例分析
Jul 18 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导入csv文件碰到乱码问题的解决方法
2014/02/10 PHP
php实现JWT验证的实例教程
2020/11/26 PHP
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
2013/04/15 Javascript
js 获取、清空input type="file"的值(示例代码)
2013/12/24 Javascript
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
AngularJS入门教程之学习环境搭建
2014/12/06 Javascript
JS中的继承操作实例总结
2020/06/06 Javascript
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
Python psutil模块简单使用实例
2015/04/28 Python
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
Python通过future处理并发问题
2017/10/17 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
python skimage 连通性区域检测方法
2018/06/21 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
浅析Windows 嵌入python解释器的过程
2019/07/26 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
2019/12/12 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
澳大利亚男士西服品牌:M.J.Bale
2018/02/06 全球购物
彪马加拿大官网:PUMA加拿大
2018/10/04 全球购物
物流专业大学生的自我鉴定
2013/11/13 职场文书
采购部岗位职责
2013/11/24 职场文书
成品仓管员工作职责
2013/12/29 职场文书
中文师范生自荐信
2014/01/30 职场文书
优秀医生事迹材料
2014/02/12 职场文书
大学自主招生自荐信范文
2014/02/26 职场文书
党的群众路线教育实践活动对照检查剖析材料
2014/10/09 职场文书
司机岗位职责范本
2015/04/10 职场文书
介绍信范文大全
2015/05/07 职场文书
大学生求职意向书
2015/05/11 职场文书
离婚律师函范本
2015/05/27 职场文书
什么是创业计划书?什么是商业计划书?这里一一解答
2019/07/12 职场文书