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

yipeiwu_com5年前PHP代码库
废话不多说,进去正题
做过后台的,应该都知道,经常要用到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中使用正则表达式提取中文实现笔记

最近老板叫做一个数据查重的小练习,涉及从一个包含中文字段的文件中提取出其中的中文字段并存储,使用php开发。中间涉及到php正则表达式中文匹配的问题,网上搜罗一大片,但是也很乱没有一个准...

PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】

本文实例讲述了PHP实现将几张照片拼接到一起的合成图片功能。分享给大家供大家参考,具体如下: <?php /** * 作品合成程序 * 针对单面,封面不做特殊处理...

php实现搜索一维数组元素并删除二维数组对应元素的方法

本文实例讲述了php实现搜索一维数组元素并删除二维数组对应元素的方法。分享给大家供大家参考。具体如下: 定义一个一维数组一个二维数组如下 $fruit=array('apple','...

PHP 常用数组内部函数(Array Functions)介绍

本章讲述几个常用的 PHP 数组内部函数。 在前面我们已经介绍过PHP 数组,创建一个数组用 array() 函数,删除一个数组元素用 unset() 函数。本章节我们还要学习一些其它常...

PHP中实现中文字符进制转换原理分析

PHP中实现中文字符进制转换原理分析

一,中文字符转十进制原理分析 GBK编码中一个汉字由二个字符组成,获取汉字字符串的方法如下 复制代码 代码如下: $string = "不要迷恋哥"; $length = strlen(...