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 相关文章推荐
玩转虚拟域名◎+ .
Oct 09 PHP
删除html标签得到纯文本可处理嵌套的标签
Apr 28 PHP
Json_encode防止汉字转义成unicode的方法
Feb 25 PHP
ThinkPHP框架里隐藏index.php
Apr 12 PHP
php unicode编码和字符串互转的方法
Aug 12 PHP
总结的一些PHP开发中的tips(必看篇)
Mar 24 PHP
在IIS下安装PHP扩展的方法(超简单)
Apr 10 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 PHP
php实现二叉树中和为某一值的路径方法
Oct 14 PHP
PHP使用Session实现上传进度功能详解
Aug 06 PHP
laravel高级的Join语法详解以及使用Join多个条件
Oct 16 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 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
在项目中寻找代码的坏命名
2012/07/14 PHP
PHP获取服务器端信息的方法
2014/11/28 PHP
php获取网页上所有链接的方法
2015/04/03 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
FusionCharts图表显示双Y轴双(多)曲线
2012/11/22 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
利用python分析access日志的方法
2016/10/26 Javascript
js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解
2017/03/15 Javascript
浅谈vue实现数据监听的函数 Object.defineProperty
2017/06/08 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
手淘flexible.js框架使用和源代码讲解小结
2018/10/15 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
vue 使用高德地图vue-amap组件过程解析
2019/09/07 Javascript
VUE中setTimeout和setInterval自动销毁案例
2020/09/07 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
2019/07/24 Python
用Python徒手撸一个股票回测框架搭建【推荐】
2019/08/05 Python
Python3.7安装keras和TensorFlow的教程图解
2020/06/18 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
python利用递归方法实现求集合的幂集
2020/09/07 Python
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
Vichy薇姿加拿大官网:法国药妆,全球专业敏感肌护肤领先品牌
2018/07/11 全球购物
C++:局部变量能否和全局变量重名
2014/03/03 面试题
如何转换一个字符串到enum值
2014/04/12 面试题
在网络中有两台主机A和B,并通过路由器和其他交换设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么来判断故障点?怎么排
2014/01/13 面试题
办公室前台岗位职责范本
2013/12/10 职场文书
英语生日邀请函
2014/01/23 职场文书
绩效管理实施方案
2014/03/19 职场文书
期末复习计划
2015/01/19 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
2015上半年个人工作总结
2015/07/27 职场文书
2016年三严三实党课学习心得体会
2016/01/06 职场文书
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL