关于Smarty中{php}{/php}标签的使用方法??
困饶了我近一个星期的问题.
手册上写到:
{php}
// including a php script directly
// from the template.
include("/path/to/display_weather.php");
{/php}
写不得不详细。现在,我需要实现这样的功能。
--------------------------
test.php
--------------------------
class testSmarty{
...
function testSmarty(){
$ths->init();
}
function doAction(){
return "yes";
}
function init(){
$this->iSmarty->display('test.tql');
}
...
}
$t = new testSmarty();
------------------------
test.tql
--------------------------
<html>
<head>
</head>
<body>
{php}
$this->doAction();
{/php}
</body>
</html>
----------------
即在模版中执行一个function.
但一直没有成功。请各位老大指点指点。
谢了。
问题点数:20、回复次数:12Top
1 楼igenus(徘徊边缘)回复于 2004-03-23 12:42:05 得分 0
lownr(廖宇雷) 您说得非常不错:)
但我现在要实现的功能是:
通过smarty生成静态文件。
而模版中{php}标签里定义的内容是不确定的。比如:$getNews(3,4,5,6,7)或者$getNews(5,4,2,5,6)。
之所以想要这种设计是想在制作模版的时候给用户更多的选择。总不能在处理templates之前就将所有的可能性的结果都计算出来吧。这样子效率就....不敢想像了。Top
2 楼wubai250(新版日语mp3)回复于 2004-03-23 14:01:55 得分 20
<{foreach from=$array2 item=item key=key}>
<tr>
<td><div align="center"><{$item.id}></div></td>
<td><div align="center"><{$item.name}></div></td>
<td><div align="center"><{$item.regdate}></div></td>
<td><{$item.so_unitprice}></td>
<td><div align="center"><a href='productedit.php?act=del&id=<{$item.id}>'>删除</a></div></td>
<td><div align="center"><a href='productedit.php?act=mod&id=<{$item.id}>'>修改</a></div></td>
</tr>
<{/foreach}>
我个人目前为止还不打算用Smarty
原因如下:
Smarty的目的就是让你把业务逻辑代码从HTML模板中分离出来[引用lownr(廖宇雷)],这句话说的真是不错,
但向上面写的东西,是呼"真的"分开了,可仔细想想和直接用php写的代码没有什么区别
"<{foreach from=$array2 item=item key=key}>"可以说是一个循环,类似while
"<{$item.id}>" 一些变量输出了,类是<?=?>
如果将以上代码完全用PHP,会是这样
<? foreach($array2 as $key=>$value):?>
<tr>
<td><div align="center"><?=$value?><div></td>
...
</tr>
<?endforeach?>
居然在html中可以用smarty的流程控制,和自己的语法,编译之后再转成php的语法,有点晕!
还有一点是关于文件修改的问题
如果需求有改动怎么办?是不是只修改模板文件就可以了吗?不见得吧!
如要在模板文件中加一数据项,模板处理文件也要修改
因为在使用一种工具时,主要是看它给人们带来了什么便利,我认为smarty没有给我带来什么便利,所以一直没有用smarty.就像以前我为什么很喜欢用htmlhelp一样.
最后还有一点,模板文件和模板文件处理文件谁来写
现在MVC不是很流行吗(我想模板技术也有之意)
开发者角色 相关系统逻辑 职责
网页设计人员 View视图/界面 设计所有用户界面的网页模板。
控制流程开发人员 Controller控制/流程 编写系统流程中的所有PHP页面。
商业逻辑开发人员 Model模型/逻辑 开发系统设计中规定的各个类(其中的方法)。
在现实中控制流程开发人员,商业逻辑开发人员往往是一个人或一些人
网页设计人员当然负责页面设计了,他们不可能会类似"<{foreach from=$array2 item=item key=key}>"
的编写.
所以模板文件和模板文件处理文件不可能是由"网页设计人员"来写的
最可怕的一件事可能是突然"网页设计人员"说他要所页面重新做一下,这个时候会怎么样,
模板文件和模板文件处理文件可以都要做修改,只不过是改多或改少的问题
模板文件和模板文件处理文件综合在一起可以说就是最初的PHP文件了,使用模板技术看起来只不过是将一个问题分成两个问题来解决了
也上也许是偏面之谈!
想请这里最有威望的唠叨说一说吧!
Top
相关问题
- 求tabpage标签中,文字换行的方法。谢谢。
- pagecontrol用什么方法可以使标签变成不可用?
- ●●●关于JavaBean标签,它如何知道调用JavaBean里的哪个方法?●●●
- 使用自定义标签将结果集显示到页面!(推荐方法)
- vb打印,PrintForm方法 文本框和标签打出来的字不一样?
- 要用bean:write标签输出一个非bean的类的方法能行吗
- 有知道如何让BCB中文本标签竖排的方法吗
- 求 "JScript.Encode" 的php decode 方法。
- vb中有没有实现像ultraedit那种标签式的窗体的方法或者控件?
- strusts中的formbean是不是一定要为每个form中的标签定义getset方法




