| 论坛注册| 加入收藏 | 设为首页| RSS
Google
您当前的位置:首页 > Linux频道 > Linux开发区 > WEB开发

PHP.MVC的模板标签系统

时间:2006-06-08 22:42:00  来源:Linux联盟收集  作者:Linux联盟收集
PHP.MVC的模板标签系统(PhpMVC_Tags)现在提供了3种类型的标签:包含指令,声明和表达式.BZmLinux联盟
    包含指令能让我们将内容分隔为许多模块,比如:页眉,页脚或者内容.包含的页面可以是HTML,或者其他标签模板页.据个例子,下面的包含指令能用来包含一个页眉:BZmLinux联盟
    <@ include 'pageHeader.ssp' @>BZmLinux联盟
    声明允许我们在模板种声明一个页面级别的变量,或者甚至其他包含页面.一个声明看起来像以下代码:BZmLinux联盟
    <@ salesAreaID = "Central District" @>BZmLinux联盟
    表达式标签允许我们在模板页中执行表达式.表达式的结果将被包含进模板页.以下表达式将被用来显示一个简单的字符串(salesAreaID),也可以找回框架配置类的属性:BZmLinux联盟
    <@ =salesAreaID @>BZmLinux联盟
    <@ =viewConfig.getAreaManager @>BZmLinux联盟
    PHP.MVC beta 0.4.0引进了一个新配置类叫做ViewResourcesConfig.这个类能被用来定义能被用在VIEW资源(模板)中的全局参数,并且也能去配置模板标签系统,它将在下面显示.phpmvc-config.xml配置文件中的view-resources元素在下面的显示:BZmLinux联盟
    <view-resourcesBZmLinux联盟
       appTitle    = "Flash Jacks' Sleek Tab Site"BZmLinux联盟
       copyright   = "Copyright @ 2010 Flash Jack. All rights reserved."BZmLinux联盟
       contactInfo = "flash.jack@jackshost.com"BZmLinux联盟
       processTags = "true"BZmLinux联盟
       compileAll  = "true"BZmLinux联盟
       className   = "MyViewResourcesConfig">

       <!-- We can set some properties on our custom ViewResourcesConfig class        -->BZmLinux联盟
       <set-property property="areaManager" value="Joe J. Blogs Esq."/> BZmLinux联盟
    </view-resources>BZmLinux联盟
    模板页面处理使用模板标签系统能被<view-resources>结点来控制.首先我们能定义是模板标签系统编译所有模板页面还是只编译修改过的.其次,我们能定义模板标签系统是否真的要处理标签页面,处理标签页面在应用程序配置当中和配置之后很有用.下面单元显示的<view-resources>是将compileAll和processTags属性设置为真(总是处理标签页并且处理所有标签页):BZmLinux联盟
    <view-resourcesBZmLinux联盟
   ...BZmLinux联盟
   processTags = "true"BZmLinux联盟
   compileAll  = "true"BZmLinux联盟
   ...BZmLinux联盟
    </view-resources>BZmLinux联盟
    BZmLinux联盟
Action DispatcherBZmLinux联盟

    PHP.MVC版本beta 0.4.0以上ActionDispatcher类用来负责使FormBean,Errors,Value(商务数据)和ViewResourcesConfig对象在我们的VIEW(模板)中可以使用.BZmLinux联盟
    在检查模板标签系统之前我们应该快速的看一下ActionObjects和ViewResourcesConfig类,当在使用标准的ActionDispatcher时.BZmLinux联盟

ActionObjectsBZmLinux联盟

    ActionDispatcher使一些对象在我们所使用的模板页面中的应用程序VIEW资源可用.3种标准的ActionObjects为:FormBean,Errors,和Value(商务数据)对象.BZmLinux联盟
    一下表格显示了在FormAction和Action类中如何使用FormBean,Errors和Value对象:BZmLinux联盟
    Saving ActionObjects in ActionForm Classes  BZmLinux联盟
 ActionErrors  $this->saveErrors($request, $actionErrors)  BZmLinux联盟
 FormBeans  $this->saveFormBean($request, $this)  BZmLinux联盟
 ValueObjects  $this->saveValueObject($request, $valueObject)  BZmLinux联盟

    Saving ActionObjects in Action Classes  BZmLinux联盟
 ActionErrors  $this->saveErrors($request, $actionErrors)  BZmLinux联盟
 FormBeans  $this->saveFormBean($request, $form)  BZmLinux联盟
 ValueObjects  $this->saveValueObject($request, $valueObject)  BZmLinux联盟

    Retrieving ActionObjects in View Resources (Templates)  BZmLinux联盟
 ActionErrors  $errors->getItemString('logon_username_reqd')  BZmLinux联盟
 FormBeans  $form->username  BZmLinux联盟
 ValueObjects  $data->salesNorth  BZmLinux联盟

    一个ActionObject将被初始化为NULL如果对象没有在之前被创建和保存.要想得到ActionObjects的详细信息请看这里:http://www.phpmvc.net/docs/guides/guidesIdx.php?doc=action-objectsBZmLinux联盟

View ResourcesBZmLinux联盟

    ActionDispatcher也能暴露ViewResourcesConfig对象到我们的模板页面中.ViewResourcesConfig对象被phpmvc-config.xml配置文件中的<view-resources>元素所配置的.如果ViewResourcesConfig对象还没有被配置,那么一个新的实例将使用默认的ViewResourcesConfig类的属性.BZmLinux联盟
    下面这段代码显示了使用模板标签系统的表达式在我们的HTML页眉模板中如何访问ViewResourcesConfig属性:BZmLinux联盟
    <!-- Page Header --> BZmLinux联盟
    <span>BZmLinux联盟
 <@ =viewConfig.getAppTitle @>BZmLinux联盟
    </span>BZmLinux联盟

配置Action DispatcherBZmLinux联盟

    ActionDispatcher是默认的PHP.MVC(在beta 0.4.0以上版本)Dispatcher类.这个Action Dispatcher被包含于框架将默认被使用,除非我们定义了一个类来替代Dispatcher类.在下一节中我们将看到怎样配置我们的应用程序来使用一个替代类--TagActionDispatcher类.BZmLinux联盟

The Php.MVC Tag Action DispatcherBZmLinux联盟

    TagActionDispatcher是一个标准的ActionDispatcher类的实现,它支持访问基本模板标签.TagActionDispatcher类支持相同的ActionObjects集合和ViewResourcesConfig属性作为默认的ActionDispatcher.TagActionDispatcher类能被用在带有或没有带有模板标签系统上,尽管由于它的额外处理会造成小的性能下降.BZmLinux联盟
    模板标签库是PHP.MVC框架结构的子系统.模板标签库联合TagActionDispatcher一起工作来支持一些简单的模板标签.BZmLinux联盟
    下面的图表显示了PHP.MVC模板标签系统的总揽.左边展示的是模板标签系统的程序流程.右边是TagActionDispatcher的程序流程,还有标签模板是怎样使这些类进行交互.BZmLinux联盟

模板标签系统的程序流程    BZmLinux联盟

1.初始化BZmLinux联盟
    当控制器传递控制到达TagActionDispatcher,一些初始化触发去设置ActionObjects和ViewResourcesConfig属性为了使用我们的模板:BZmLinux联盟
    从request中重新获得$form,$errors和$data对象,如果这些对象中的任意一个已经在之前被创建(比如在Action类中),那么对象现在将在资源模板中不可见,否则对象将被设置为NULL.BZmLinux联盟
    重新获得ViewResourcesConfig对象的参考,它包含了配置参数.BZmLinux联盟
    设置在ViewResourcesConfig参数中指向模板源文件和编译的模板文件的路径.BZmLinux联盟
2.设置标签页面BZmLinux联盟
    模板源文件的扩展名(可能是".ssp")被用来和ViewResourcesConfig->tagFlagStr参数相比较来决定是否这个页面需要处理,否则页面将被处理为标准(无标签)模板文件.我们能在view-resources元素中配置标签文件扩展名,就像这样:BZmLinux联盟
    <view-resourcesBZmLinux联盟
 ...BZmLinux联盟
 tagFlagStr = ".ssp"BZmLinux联盟
 tagFlagCnt = "-4"BZmLinux联盟
 ...BZmLinux联盟
    </view-resources>BZmLinux联盟
    tagFlagStr指示了标签模板源文件能被预处理,比如:myPage.ssp.这个扩展名触发标签处理.属性tagFlagCnt定义了文件名结尾的字符数,包括"."(xxxYyy.ssp).据个例子,-4代表源文件名最后4个字符.默认值是.ssp和-4,因此如果我们使用一个模板文件名像myPage.ssp,我们不需要设置这些参数.BZmLinux联盟
3.处理标签文件BZmLinux联盟
    模板标签系统决定是否运行标签处理器,要根据ViewResourcesConfig->processTags属性.如果这个属性为真,模板页(及它所包含的页)将被标签处理器类所处理,否则标签处理器不会被调用.开发者只要将它在开发中将其设置为真即可,假则不处理.但要注意的是当processTags属性设置为真,修改过的标签页才会被编译(这依赖于compileAll属性设置).我们能定义processTags属性在view-resources元素,就像这样:BZmLinux联盟
    <view-resourcesBZmLinux联盟
 ...BZmLinux联盟
 processTags = "True"BZmLinux联盟
 ...BZmLinux联盟
    </view-resources>BZmLinux联盟
    注意,它的默认值是假.BZmLinux联盟
4.编译模板页.BZmLinux联盟
    如果TagActionDispatcher决定模板页将被处理,那么它会传递控制给模板标签系统.现在模板标签系统将决定是否只编译修改过的页,还是编译所有页.这种行为使用ViewResourcesConfig->compileAll属性来定义.我们定义compileAll属性就像这样:BZmLinux联盟
    <view-resourcesBZmLinux联盟
 ...BZmLinux联盟
 compileAll = "True"BZmLinux联盟
 ...BZmLinux联盟
    </view-resources>BZmLinux联盟
    这个属性默认为假.BZmLinux联盟
5.只编译修改的页.BZmLinux联盟
    如果compileAll属性设置为假(默认值),那么只会编译修改过的页.据个例子,如果被请求的页面自从上次被请求以来被修改过,此页将会被编译.BZmLinux联盟
6.编译所有的页.BZmLinux联盟
    如果compileAll属性设置为真,模板标签系统将总是编译页面(包括包含的页面)无论此页面自从上次请求以来是否修改过.开发者使用在开发中使用这个选项能够保证所有的页面都被处理.BZmLinux联盟
7.处理VIEW资源.BZmLinux联盟
    在处理完模板页之后,控制权回到TagActionDispatcher.被请求的VIEW资源(模板文件)将被任何其他的正规PHP.MVC模板文件所处理.TagActionDispatcher重新获得被编译的页(包括包含的页面)并且将页面输出给用户的浏览器.如果模板标签系统没有被调用,TagActionDispatcher将被请求的页面作为正规的VIEW资源来处理.比如TagActionDispatcher能被用来代替标准的ActionDispatcher.BZmLinux联盟

PHP.MVC标签语法BZmLinux联盟

    在基本的介绍之后,我们现在就可以来看看模板标签系统的语法.BZmLinux联盟
    在看具体的标签之前,我们应该定义什么作为我们的标签.为了写一个标签,我们使用<@ ... @>标签结点.左标签(<@)和右标签(@>)是默认的标签.如果必要的话,这些标签我们能够在phpmvc-config.xml中重新定义.BZmLinux联盟
    模板标签系统现在支持以下3种标签:包含指令,声明和表达式.我们现在来看看这些指令.BZmLinux联盟

包含指令BZmLinux联盟

    包含指令能让我们将内容分隔为许多模块,比如:页眉,页脚或者内容.包含的页面可以是HTML,或者其他标签模板页.据个例子,下面的包含指令能用来包含一个页眉:BZmLinux联盟
    <@ include 'pageHeader.ssp' @>BZmLinux联盟
    一个包含指令在模板上下文种的例子:BZmLinux联盟
<html>BZmLinux联盟
<head>BZmLinux联盟
...

 1/4    1 2 3 4 ›› ›|

来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
    无相关信息
栏目更新
栏目热门