首页 > 学习笔记 > PHP > 正文

ecshop分析 — php和dwt文件之间的参数传递

发布时间:2017-02-16 10:35:00 点击量:

我们先研究一下ecshop是怎么将一系列从数据库中读取出来,然后传到显示页面中的。要解决这个问题我们要用根目录下的index.php和 theme/default下的index.dwt来作为用例。之所以用对应的两个文件夹,是因为在index.dwt中要显示的数据是通过smarty 从index.php中加载进来的。在index.php中有如下代码:
$position = assign_ur_here();
$smarty->assign('page_title', $position['title']); // 页面标题
$smarty->assign('ur_here', $position['ur_here']); // 当前位置

首先它是调用函数assign_ur_here,这样得到了变量$position,在变量$position中有title和ur_here这两个变量。在index.dwt中会有如下代码:

<!--

<title>{$page_title}<title>

-->


是的,一旦$smarty->assign(’page_title’, $position['title'])执行完,$page_title就会在index.dwt中成为一个可以使用的变量。那么到目前为止我们知道如何 从php脚本中往dwt文件中传我们需要的变量了。smarty就是通过这种机制将需要显示的内容传到对应的dwt文件中,这样就实现了页面与内容的分 离。Php脚本中的数据我们已经有办法在dwt文件中得到了,下面就是要解决如何显示这些数据。凡是通过smarty加载到dwt文件中的变量,在显示的 时候都是加上{}来显示的。如果加载过来的是数组那么就要通过smarty的循环来显示,如果我传进来一个数组是 $school并且数组的每个条目中有name,那么下面的代码就是实现在页面中显示数组的每个条目的name。
Foreach($school as $k){echo $k[‘name’] . ‘ ’;}

这样就会在页面中将数组的内容全部打印出来了。
下面我们来举个例子来说明一下dwt到底是怎么显示的。
在index.php中的某个地方写上 smarty->assign(‘test’, ‘This is just a test!’);
然后在index.dwt中某个地方写上{$test},然后在首页中就会有“This is a test!”。

上一篇:phpcms v9表单提交后延长提示页面停留时间

下一篇:导入Mysql文件出错 1115 - Unknown character set: 'utf8mb4'