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 高级课程笔记 面向对象
Jun 21 PHP
PHP日期处理函数 整型日期格式
Jan 12 PHP
php比较多维数组中值的大小排序实现代码
Sep 08 PHP
php中调用其他系统http接口的方法说明
Feb 28 PHP
php switch语句多个值匹配同一代码块的实现
Mar 03 PHP
PHP Streams(流)详细介绍及使用
May 12 PHP
php示例详解Constructor Prototype Pattern 原型模式
Oct 15 PHP
php 判断字符串编码是utf-8 或gb2312实例
Nov 01 PHP
php+js实现百度地图多点标注的方法
Nov 30 PHP
php简单生成一组与多组随机字符串的方法
May 09 PHP
php利用ZipArchive类操作文件的实例
Jan 21 PHP
Laravel框架集合用法实例浅析
May 14 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
DIY实用性框形天线
2021/03/02 无线电
PHP 和 MySQL 基础教程(二)
2006/10/09 PHP
PHP添加MySQL数据记录代码
2008/06/07 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
2018/07/31 PHP
javascript 动态加载 css 方法总结
2009/07/11 Javascript
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
JavaScript动态改变HTML页面元素例如添加或删除
2014/08/10 Javascript
js实现input框文字动态变换显示效果
2015/08/19 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
2015/09/19 Javascript
JS折半插入排序算法实例
2015/12/02 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
js如何编写简单的ajax方法库
2017/08/02 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
Bootstrap实现的表格合并单元格示例
2018/02/06 Javascript
Node.js readline模块与util模块的使用
2018/03/01 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
Angular7中创建组件/自定义指令/管道的方法实例详解
2019/04/02 Javascript
Python中replace方法实例分析
2014/08/20 Python
跟老齐学Python之再深点,更懂list
2014/09/20 Python
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
2017/05/23 Python
Python 自动化表单提交实例代码
2017/06/08 Python
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
Python获取时间戳代码实例
2019/09/24 Python
Tensorflow读取并输出已保存模型的权重数值方式
2020/01/04 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
创业计划书——互联网商机
2014/01/12 职场文书
爱情保证书范文
2014/02/01 职场文书
旷课检讨书1000字
2014/02/14 职场文书
环境保护标语
2014/06/20 职场文书
学习普通话的体会
2014/11/07 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python