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开发GUI
Oct 09 PHP
PHP面向对象法则
Feb 23 PHP
ajax在joomla中的原生态应用代码
Jul 19 PHP
php之CodeIgniter学习笔记
Jun 17 PHP
php中通过curl检测页面是否被百度收录
Sep 27 PHP
php操作XML、读取数据和写入数据的实现代码
Aug 15 PHP
PHP中使用addslashes函数转义的安全性原理分析
Nov 03 PHP
JSON字符串传到后台PHP处理问题的解决方法
Jun 05 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
Nov 14 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
Oct 22 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 20 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
PHP+MySQL5.0中文乱码解决方法
2006/11/20 PHP
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
Google (Local) Search API的简单使用介绍
2013/11/28 Javascript
js 获取浏览器版本以此来调整CSS的样式
2014/06/03 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
javascript实现显示和隐藏div方法汇总
2015/08/14 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
2016/02/14 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
Bootstrap模态框(Modal)实现过渡效果
2017/03/17 Javascript
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
详解Vuex管理登录状态
2017/11/13 Javascript
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
javascript性能优化之分时函数的介绍
2018/03/28 Javascript
Linux Centos7.2下安装nodejs&amp;npm配置全局路径的教程
2018/05/15 NodeJs
Nodejs技巧之Exceljs表格操作用法示例
2019/11/06 NodeJs
python正则表达式re模块详解
2014/06/25 Python
Python实现求最大公约数及判断素数的方法
2015/05/26 Python
Python使用turtule画五角星的方法
2015/07/09 Python
python实现京东秒杀功能
2018/07/30 Python
python实现大量图片重命名
2020/03/23 Python
使用python实现希尔、计数、基数基础排序的代码
2019/12/25 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
css3中用animation的steps属性制作帧动画
2019/04/25 HTML / CSS
绝对令人的惊叹的CSS3折叠效果(3D效果)整理
2012/12/30 HTML / CSS
世界最大的海报和艺术印刷商店:AllPosters.com
2017/02/01 全球购物
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
读书心得体会
2013/12/28 职场文书
升职感谢领导的话语及升职感谢信
2019/06/24 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python
Python 数据可视化之Matplotlib详解
2021/11/02 Python
Java设计模式之代理模式
2022/04/22 Java/Android