smarty巧妙处理iframe中内容页的代码


Posted in PHP onMarch 07, 2012

废话不多说,进去正题
做过后台的,应该都知道,经常要用到iframe来处理导航,如果按一般的思路来做这个功能,还是挺简单的
可是当我用smarty的时候,就发现了问题,比如,一个iframeset分成了:头部top,左边menu,右边main,
正常情况,用smarty来处理的话,一般是这样:
如果3个页面仅仅只是静态页面的话,就是如下处理
iframe.html代码:

<frame src="top.html" name="topFrame" id="topFrame" scrolling="no"> 
<frameset cols="180,*" name="btFrame" id="btFrame" frameborder="NO" border="0" framespacing="0"> 
<frame src="menu.html" id="leftbar" noresize name="menu" scrolling="yes"> 
<frame src="main.html" id="rightbar" noresize name="main" scrolling="yes"> 
</frameset>

假设iframe里面的内容页都要应用到一些特殊处理,如:
top.html需要显示后台登陆用户名
menu.html中menu都是动态获取
main.html中需要读取服务器的信息
这样的话,我们会给3个内容页分别用3个后台处理页
//top.php: 
$smarty->assign('user', $names ); 
smarty_Output('top.php') 
//menu.php: 
$arr=array(); 
$arr=GetMenu(); 
$smarty->assign('menu', $arr); 
smarty_Output('menu.php'); 
//main.php 
$smarty->assign('serverInfo', $serverInfoArr); 
smarty_Output('main.php'); 
//显示iframe页 
smarty_Output('iframe.html')

上面的处理方法,完全能达到要求
iframe.html代码:
<frame src="top.php" name="topFrame" id="topFrame" scrolling="no"> 
<frameset cols="180,*" name="btFrame" id="btFrame" frameborder="NO" border="0" framespacing="0"> 
<frame src="menu.php" id="leftbar" noresize name="menu" scrolling="yes"> 
<frame src="main.php" id="rightbar" noresize name="main" scrolling="yes"> 
</frameset>

现在我们假设,我们现在要对这3个内容页分别进行分角色处理,不同角色,3个页面需要显示不同的效果
按上面的处理方法,我们就需要对3个页面分别处理,这样就自然的就多了冗余的处理,而且以后的维护也麻烦
于是我想到了下面的方法,独立出一个专门的处理程序iframe.php,通过条件来模拟出上面3个页面
直接贴代码了:
iframe.php 后台代码:
/*此处放共用处理代码*/ 
switch($src) 
{ 
case "top": 
/*此处放处理代码*/ 
smarty_Output('top.html'); 
break; 
case "menu": 
/*此处放处理代码*/ 
smarty_Output('menu.html'); 
break; 
case "main": 
/*此处放处理代码*/ 
smarty_Output('main.html'); 
break; 
default: 
break; 
}

iframe.html:
<frame src="iframe.php?src=top" name="topFrame" id="topFrame" scrolling="no"> 
<frameset cols="180,*" name="btFrame" id="btFrame" frameborder="NO" border="0" framespacing="0"> 
<frame src="iframe.php?src=menu" id="leftbar" noresize name="menu" scrolling="yes"> 
<frame src="iframe.php?src=main" id="rightbar" noresize name="main" scrolling="yes"> 
</frameset>

通过这样处理,我感觉方便多了
PHP 相关文章推荐
PHP 和 MySQL 基础教程(三)
Oct 09 PHP
PHP开发中四种查询返回结果分析
Jan 02 PHP
php中通过虚代理实现延迟加载的实现代码
Jun 10 PHP
PHP正则表达式之定界符和原子介绍
Oct 05 PHP
php中计算程序运行时间的类代码
Nov 03 PHP
基于php在各种web服务器的运行模式详解
Jun 03 PHP
php实现mysql备份恢复分卷处理的方法
Dec 26 PHP
CI框架中site_url()和base_url()的区别
Jan 07 PHP
php输出xml属性的方法
Mar 19 PHP
PHP提取字符串中的手机号正则表达式怎么写
Jul 17 PHP
YII框架中使用memcache的方法详解
Aug 02 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
php 操作符与控制结构
Mar 07 #PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
Mar 20 #PHP
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
Mar 06 #PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
Mar 05 #PHP
php在服务器执行exec命令失败的解决方法
Mar 03 #PHP
Php Ctemplate引擎开发相关内容
Mar 03 #PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
Mar 01 #PHP
You might like
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
基于jquery的tab切换 js原理
2010/04/01 Javascript
style、 currentStyle、 runtimeStyle区别分析
2010/08/01 Javascript
THREE.JS入门教程(1)THREE.JS使用前了解
2013/01/24 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
用js来刷新当前页面保留参数的具体实现
2013/12/23 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
jQuery实现HTML表格单元格的合并功能
2016/04/06 Javascript
Bootstrap页面布局基础知识全面解析
2016/06/13 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
JS判断数组那点事
2017/10/10 Javascript
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
解决webpack+Vue引入iView找不到字体文件的问题
2018/09/28 Javascript
解决axios会发送两次请求,有个OPTIONS请求的问题
2018/10/25 Javascript
在vue中利用v-html按分号将文本换行的例子
2019/11/14 Javascript
JS定时器如何实现提交成功提示功能
2020/06/12 Javascript
vue打开子组件弹窗都刷新功能的实现
2020/09/21 Javascript
Python的Django框架下管理站点的基本方法
2015/07/17 Python
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
神经网络理论基础及Python实现详解
2017/12/15 Python
python3使用SMTP发送简单文本邮件
2018/06/19 Python
Python lambda表达式用法实例分析
2018/12/25 Python
Python子类继承父类构造函数详解
2019/02/19 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
几个Linux面试题笔试题
2012/12/01 面试题
提高EJB性能都有哪些技巧
2012/03/25 面试题
民主生活会批评与自我批评总结
2014/10/17 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
2016年安全月活动总结
2016/04/06 职场文书
python数据分析之用sklearn预测糖尿病
2021/04/22 Python