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隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
Nov 02 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
Jun 29 PHP
学习php过程中的一些注意点的总结
Oct 25 PHP
php权重计算方法代码分享
Jan 09 PHP
php格式输出文件var_export函数实例
Nov 15 PHP
php+mysql实现简单的增删改查功能
Jul 13 PHP
PHP开发中AJAX技术的简单应用
Dec 11 PHP
thinkphp3.x中session方法的用法分析
May 20 PHP
PHP获取指定日期是星期几的实现方法
Nov 30 PHP
深入浅出讲解:php的socket通信原理
Dec 03 PHP
详解PHP防止直接访问.php 文件的实现方法
Jul 28 PHP
php面向对象重点知识分享
Sep 27 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 minixml详解
2008/07/19 PHP
php使用百度翻译api示例分享
2014/01/31 PHP
PHP实现采集中国天气网未来7天天气
2014/10/15 PHP
php学习笔记之基础知识
2014/11/08 PHP
详解php命令注入攻击
2019/04/06 PHP
Javascript Throttle & Debounce应用介绍
2013/03/19 Javascript
Javascript的时间戳和php的时间戳转换注意事项
2013/04/12 Javascript
Javascript控制页面链接在新窗口打开具体方法
2013/08/16 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
JavaScript动态修改网页元素内容的方法
2015/03/21 Javascript
jquery实现横向图片轮播特效代码分享
2015/11/19 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
微信小程序-小说阅读小程序实例(demo)
2017/01/12 Javascript
bootstrap中的 form表单属性role="form"的作用详解
2017/01/20 Javascript
angularjs2 ng2 密码隐藏显示的实例代码
2017/08/01 Javascript
如何抽象一个Vue公共组件
2017/10/17 Javascript
实例分析js事件循环机制
2017/12/13 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
JS实现判断图片是否加载完成的方法分析
2018/07/31 Javascript
jQuery实现的导航条点击后高亮显示功能示例
2019/03/04 jQuery
微信小程序实现可长按移动控件
2020/11/01 Javascript
[04:45]上海特级锦标赛主赛事第三日TOP10
2016/03/05 DOTA
深度剖析使用python抓取网页正文的源码
2014/06/11 Python
Django rest framework jwt的使用方法详解
2019/08/08 Python
HTML5拖拽的简单实例
2016/05/30 HTML / CSS
国外软件测试工程师面试题
2016/12/09 面试题
华为python面试题
2016/05/03 面试题
小学新学期教师寄语
2014/01/18 职场文书
护理专业自我鉴定
2014/01/30 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
美术教师自我鉴定
2014/02/12 职场文书
七夕情人节促销方案
2014/06/07 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
书法社团活动总结
2015/05/07 职场文书
Node实现搜索框进行模糊查询
2021/06/28 Javascript
Go 通过结构struct实现接口interface的问题
2021/10/05 Golang