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

2015-01-24信息快讯网

最近在用smarty做一个小项目,发现smarty中模板引擎挺不错,让前端和后端真正的分离

废话不多说,进去正题
做过后台的,应该都知道,经常要用到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> 

通过这样处理,我感觉方便多了
深入Memcache的Session数据的多服务器共享详解
eAccelerator的安装与使用详解
探讨PHP使用eAccelerator的API开发详解
windows环境下php配置memcache的具体操作步骤
PHP rawurlencode与urlencode函数的深入分析
如何利用php array_multisort函数 对数据库结果进行复杂排序
解析php中call_user_func_array的作用
深入eAccelerator与memcached的区别详解
php将gd生成的图片缓存到memcache的小例子
php set_time_limit()函数的使用详解
PHP命名空间(Namespace)的使用详解
关于Iframe如何跨域访问Cookie和Session的解决方法
mysqli_set_charset和SET NAMES使用抉择及优劣分析
PDO版本问题 Invalid parameter number: no parameters were bound
zend framework配置操作数据库实例分析
windows下zendframework项目环境搭建(通过命令行配置)
Zend Framework中的简单工厂模式 图文
工厂模式在Zend Framework中应用介绍
php打造属于自己的MVC框架
php 操作符与控制结构
MySQL时间字段究竟使用INT还是DateTime的说明
修改PHP的memory_limit限制的方法分享
php+iframe实现隐藏无刷新上传文件
PHP中call_user_func_array()函数的用法演示
PHP警告Cannot use a scalar value as an array的解决方法
Uncaught exception com_exception with message Failed to create COM object
PHP中strtotime函数使用方法分享
php读取mysql乱码,用set names XXX解决的原理分享
PHP写UltraEdit插件脚本实现方法
PHP的array_diff()函数在处理大数组时的效率问题
Array of country list in PHP with Zend Framework
php利用iframe实现无刷新文件上传功能的代码
PHP全概率运算函数(优化版) Webgame开发必备
zend framework多模块多布局配置
©2014-2024 dbsqp.com