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和ACCESS写聊天室(五)
Oct 09 PHP
php字符串截取中文截取2,单字节截取模式
Dec 10 PHP
PHP去除数组中重复的元素并按键名排序函数
Aug 18 PHP
PHP 身份验证方面的函数
Oct 11 PHP
.htaccess文件保护实例讲解
Feb 06 PHP
PHP开发中AJAX技术的简单应用
Dec 11 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
Dec 31 PHP
php传值方式和ajax的验证功能
Mar 27 PHP
IIS 7.5 asp Session超时时间设置方法
Apr 17 PHP
PHP Laravel 上传图片、文件等类封装
Aug 16 PHP
PHP设计模式之状态模式定义与用法详解
Apr 02 PHP
thinkphp5使用无限极分类
Feb 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之require/include顺序 推荐
2011/01/02 PHP
PHP遍历二维数组的代码
2011/04/22 PHP
PHP MYSQL简易交互式站点开发
2016/12/27 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
基于PHP实现用户在线状态检测
2020/11/10 PHP
javascript 打开页面window.location和window.open的区别
2010/03/17 Javascript
javascript预览上传图片发现的问题的解决方法
2010/11/25 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
js计算两个时间之间天数差的实例代码
2013/11/19 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
js验证IP及子网掩码的合法性有效性示例
2014/04/30 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
jQuery检查事件是否触发的方法
2015/06/26 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
jq checkbox 的全选并ajax传参的实例
2017/04/01 Javascript
详解vue.js2.0父组件点击触发子组件方法
2017/05/10 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
利用vue组件自定义v-model实现一个Tab组件方法示例
2017/12/06 Javascript
使用NestJS开发Node.js应用的方法
2018/12/03 Javascript
JS 5种遍历对象的方式
2020/06/16 Javascript
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
用Python代码来绘制彭罗斯点阵的教程
2015/04/03 Python
Python设计模式之抽象工厂模式原理与用法详解
2019/01/15 Python
pytorch 数据处理:定义自己的数据集合实例
2019/12/31 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
python同时遍历两个list用法说明
2020/05/02 Python
Python 带星号(* 或 **)的函数参数详解
2021/02/23 Python
基于HTML5的WebGL实现json和echarts图表展现在同一个界面
2017/10/26 HTML / CSS
vue实现倒计时功能
2021/03/24 Vue.js
自我鉴定注意事项
2014/01/19 职场文书
计算机学生求职信范文
2014/01/30 职场文书
优秀党支部书记事迹材料
2014/05/29 职场文书
房屋认购协议书
2015/01/29 职场文书
大学生简历自我评价2015
2015/03/03 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python
用Python创建简易网站图文教程
2021/06/11 Python