在开发指南单元中有几个重要的内容,帮助里把它拿出来简要说明了,下面我翻译记录如下:
一、Smarty Templates
此话题讲述了如何在vcl for php项目中使用Smarty template engine (smarty模版引擎),使用它,你可以保持现有的html模版,然后用vcl for php来添加动态内容,实现动态编辑,数据列表等。
下面是使用smarty templates的具体步骤:
创建你的模版
一个smarty模版可以是正规的html文件,可以是任何后缀名,按惯例你可以用.tpl后缀,便.html也可以。你在其中添加smarty标签使它们成为smarty模版,标签样式为:
{%tag%}
你可以到smarty官方网站去找到更多的语法方面的知识。
添加标准标签
Smarty功能需要在模版中插入一些标准的标签,才能使事件正确地运行来,才能添加javascript代码和其它资源,下面是在一个基本的模版中加入标准标签的代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>VCL for PHP :: PHP Web Application Development Framework</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
{%$HeaderCode%}
</head>
<body>
{%$StartForm%}
{%$EndForm%}
</body>
</html>
如所示,这里有三个标签(HeaderCode,StartForm,EndForm),有它们后,模版才可以php页面相结合。
在页面上附加上模版
要使模版运行起来,你必须设置二个属性值:
- TemplateEngine - To "SmartyTemplate"
- TemplateFilename - With the path to your template
这样就可以让模版在面页上工作起来。
添加标签来放置其它组件
Smarty和vcl for php相结合的真正强大的是可以在模版上插入组件,仅只要在你要插入的地方插入一个{%$组件名%}标签就可以了。
然后,你就可以创建一个vcl for php 页面,在任何地方放上先前如标签所定的组件就行了。
调用内部smarty对象
使用Smarty模版强大功能,你可以通过页的ontemplate事件来实现调用smarty模版对象来渲染页面
可以如下应用:
$template=$params['template']; $template->_smarty->assign('latest_daily',$this->getDailyBuildsLeft());
下面我要说几句了:
网上有专门的smarty教程。smarty官网也有很细地说明,只是它不是针对vcl for php来编写的,但请大家记住,vcl for php也是php就可以了,我们可以在任何过程里执行php代码。
smarty官网:http://www.smarty.net/
smarty 中文手册:http://www.hbcms.com/main/smarty/
要想很好的用上这个功能不博采各家之长是不行的。呵呵,至少我是这么认为的。我想帮助这里也只是授之以渔吧。
二、页继承
在vcl for php中,你能够从一个页面上继承它的组件和事件,也就是说,你可以创建一个父页面然后继承它的所有函数。
这个在开发网站时的一个特别有用的功能,那些看起来在整个网站里都不会有什么变化的内容,就可以创建一个master page(父页面),然后在你新建的页面中把它当基类来继承就可以了。(例程里例子,大家自己去看下更容易理解)
你只要如下操作:
指定一个页为Master Page
在指定的页的属性中设置IsMaster为true就可以了,如果你设定了这个属性,那么这个页运行起来后就不会显示任何东西,因为它的脚本被设定为不执行了。(我想它只用来做基类用的吧)
在你的页中引用父页
如果你要继承父页,你必须有在单元引用地方引用父面,通常是使用require_once在页代码页。
require_once("your_master_page_unit.php");
继承父页
好了,现在你需要改变你的页父类为你要继承的页名,通常是将Page改为你的父页类名,现在你运行页面会发现它显示了父页的内容和你加入的组件。