php mvc用户系统,PHP.MVC的模板标签系统

PHP.MVC的模板标签系统推荐查看本文HTML版本

PHP.MVC的模板标签系统(PhpMVC_Tags)现在提供了3种类型的标签:包含指令,声明和表达式.

包含指令能让我们将内容分隔为许多模块,比如:页眉,页脚或者内容.包含的页面可以是HTML,或者其他标签模板页.据个例子,下面的包含指令能用来包含一个页眉:

<@ include 'pageHeader.ssp' @>

声明允许我们在模板种声明一个页面级别的变量,或者甚至其他包含页面.一个声明看起来像以下代码:

<@ salesAreaID = "Central District" @>

表达式标签允许我们在模板页中执行表达式.表达式的结果将被包含进模板页.以下表达式将被用来显示一个简单的字符串(salesAreaID),也可以找回框架配置类的属性:

<@ =salesAreaID @>

<@ =viewConfig.getAreaManager @>

PHP.MVC beta 0.4.0引进了一个新配置类叫做ViewResourcesConfig.这个类能被用来定义能被用在VIEW资源(模板)中的全局参数,并且也能去配置模板标签系统,它将在下面显示.phpmvc-config.xml配置文件中的view-resources元素在下面的显示:

<view-resources

appTitle = "Flash Jacks' Sleek Tab Site"

copyright = "Copyright @ 2010 Flash Jack. All rights reserved."

contactInfo = "flash.jack@jackshost.com"

processTags = "true"

compileAll = "true"

className = "MyViewResourcesConfig">

<!-- We can set some properties on our custom ViewResourcesConfig class -->

<set-property property="areaManager" value="Joe J. Blogs Esq."/>

</view-resources>

模板页面处理使用模板标签系统能被<view-resources>结点来控制.首先我们能定义是模板标签系统编译所有模板页面还是只编译修改过的.其次,我们能定义模板标签系统是否真的要处理标签页面,处理标签页面在应用程序配置当中和配置之后很有用.下面单元显示的<view-resources>是将compileAll和processTags属性设置为真(总是处理标签页并且处理所有标签页):

<view-resources

...

processTags = "true"

compileAll = "true"

Action Dispatcher

PHP.MVC版本beta 0.4.0以上ActionDispatcher类用来负责使FormBean,Errors,Value(商务数据)和ViewResourcesConfig对象在我们的VIEW(模板)中可以使用.

在检查模板标签系统之前我们应该快速的看一下ActionObjects和ViewResourcesConfig类,当在使用标准的ActionDispatcher时.

ActionObjects

ActionDispatcher使一些对象在我们所使用的模板页面中的应用程序VIEW资源可用.3种标准的ActionObjects为:FormBean,Errors,和Value(商务数据)对象.

一下表格显示了在FormAction和Action类中如何使用FormBean,Errors和Value对象:

Saving ActionObjects in ActionForm Classes

ActionErrors $this->saveErrors($request, $actionErrors)

FormBeans $this->saveFormBean($request, $this)

ValueObjects $this->saveValueObject($request, $valueObject)

Saving ActionObjects in Action Classes

ActionErrors $this->saveErrors($request, $actionErrors)

FormBeans $this->saveFormBean($request, $form)

ValueObjects $this->saveValueObject($request, $valueObject)

Retrieving ActionObjects in View Resources (Templates)

ActionErrors $errors->getItemString('logon_username_reqd')

FormBeans $form->username

ValueObjects $data->salesNorth

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

View Resources

ActionDispatcher也能暴露ViewResourcesConfig对象到我们的模板页面中.ViewResourcesConfig对象被phpmvc-config.xml配置文件中的<view-resources>元素所配置的.如果ViewResourcesConfig对象还没有被配置,那么一个新的实例将使用默认的ViewResourcesConfig类的属性.

下面这段代码显示了使用模板标签系统的表达式在我们的HTML页眉模板中如何访问ViewResourcesConfig属性:

<!-- Page Header -->

<span>

<@ =viewConfig.getAppTitle @>

</span>

配置Action Dispatcher

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

The Php.MVC Tag Action Dispatcher

TagActionDispatcher是一个标准的ActionDispatcher类的实现,它支持访问基本模板标签.TagActionDispatcher类支持相同的ActionObjects集合和ViewResourcesConfig属性作为默认的ActionDispatcher.TagActionDispatcher类能被用在带有或没有带有模板标签系统上,尽管由于它的额外处理会造成小的性能下降.

模板标签库是PHP.MVC框架结构的子系统.模板标签库联合TagActionDispatcher一起工作来支持一些简单的模板标签.

下面的图表显示了PHP.MVC模板标签系统的总揽.左边展示的是模板标签系统的程序流程.右边是TagActionDispatcher的程序流程,还有标签模板是怎样使这些类进行交互.

1.初始化

当控制器传递控制到达TagActionDispatcher,一些初始化触发去设置ActionObjects和ViewResourcesConfig属性为了使用我们的模板:

从request中重新获得$form,$errors和$data对象,如果这些对象中的任意一个已经在之前被创建(比如在Action类中),那么对象现在将在资源模板中不可见,否则对象将被设置为NULL.

重新获得ViewResourcesConfig对象的参考,它包含了配置参数.

设置在ViewResourcesConfig参数中指向模板源文件和编译的模板文件的路径.

2.设置标签页面

模板源文件的扩展名(可能是".ssp")被用来和ViewResourcesConfig->tagFlagStr参数相比较来决定是否这个页面需要处理,否则页面将被处理为标准(无标签)模板文件.我们能在view-resources元素中配置标签文件扩展名,就像这样:

<view-resources

...

tagFlagStr = ".ssp"

tagFlagCnt = "-4"

...

</view-resources>

tagFlagStr指示了标签模板源文件能被预处理,比如:myPage.ssp.这个扩展名触发标签处理.属性tagFlagCnt定义了文件名结尾的字符数,包括"."(xxxYyy.ssp).据个例子,-4代表源文件名最后4个字符.默认值是.ssp和-4,因此如果我们使用一个模板文件名像myPage.ssp,我们不需要设置这些参数.

3.处理标签文件

模板标签系统决定是否运行标签处理器,要根据ViewResourcesConfig->processTags属性.如果这个属性为真,模板页(及它所包含的页)将被标签处理器类所处理,否则标签处理器不会被调用.开发者只要将它在开发中将其设置为真即可,假则不处理.但要注意的是当processTags属性设置为真,修改过的标签页才会被编译(这依赖于compileAll属性设置).我们能定义processTags属性在view-resources元素,就像这样:

<view-resources

...

processTags = "True"

7.处理VIEW资源.

在处理完模板页之后,控制权回到TagActionDispatcher.被请求的VIEW资源(模板文件)将被任何其他的正规PHP.MVC模板文件所处理.TagActionDispatcher重新获得被编译的页(包括包含的页面)并且将页面输出给用户的浏览器.如果模板标签系统没有被调用,TagActionDispatcher将被请求的页面作为正规的VIEW资源来处理.比如TagActionDispatcher能被用来代替标准的ActionDispatcher.

PHP.MVC标签语法

在基本的介绍之后,我们现在就可以来看看模板标签系统的语法.

在看具体的标签之前,我们应该定义什么作为我们的标签.为了写一个标签,我们使用<@ ... @>标签结点.左标签(<@)和右标签(@>)是默认的标签.如果必要的话,这些标签我们能够在phpmvc-config.xml中重新定义.

模板标签系统现在支持以下3种标签:包含指令,声明和表达式.我们现在来看看这些指令.

包含指令

包含指令能让我们将内容分隔为许多模块,比如:页眉,页脚或者内容.包含的页面可以是HTML,或者其他标签模板页.据个例子,下面的包含指令能用来包含一个页眉:

<@ include 'pageHeader.ssp' @>

一个包含指令在模板上下文种的例子:

<html>

<head>

...

</head>

<body>

<center>

<table class='pageLayoutTable'>

<tr>

<td class='pageHeader'>

<@ include 'pageHeader.ssp' @>

声明允许我们在模板种声明一个页面级别的变量,或者甚至其他包含页面.一个声明看起来像以下代码:

<@ salesAreaID = "Central District" @>

我们能够在模板文件中使用声明:

<@ saleMonth = data.getValueBean('SALE_MONTH') @>

<@ saleTitle = data.getValueBean('SALE_TITLE') @>

<@ dealHeading = data.getValueBean('DEAL_HEADING') @>

<@ salesAreaID = "Central District" @>

<html>

<head>

<link rel='stylesheet' type='text/css' href="./style/pageStyles.css"/>

<title>

...

</title>

</head>

<body>

...

</body>

</html>

在这里例子中,我们声明了一些页变量.前3个变量已经在我们创建的Action类中的ActionObject中被赋值:data.getValueBean('SALE_MONTH').第4个变量被赋了一个字符串值:salesAreaID = "Central District".

声明的变量现在可以在页面中使用了:

<!-- start_page_contents_include -->

...

<!-- Content section heading -->

<h4><@=dealHeading @> <@=saleMonth @></h4>

<center>

Clearance deals

<table class='productsTable'>

...

</table>

</center>

<center>

Todays specials

<table class='productsTable'>

表达式标签允许我们在模板页中执行表达式.表达式的结果将被包含进模板页.以下表达式将被用来显示一个简单的字符串(salesAreaID),也可以找回框架配置类的属性:

<@ =salesAreaID @>

<@ =viewConfig.contactInfo @>

为了使用这些表达式,我们要在之前声明过:

<@ salesAreaID = "Central District" @>

或者在ViewResourcesConfig对象(viewConfig)的属性在view-resources结点中声明过:

<view-resources

appTitle = "Flash Jacks' Sleek Tab Site"

contactInfo = "flash.jack@jackshost.com"

...

</view-resources>

当使用表达式中的对象时,我们能够写一个对象-方法(object-method)声明在标准的PHP符号或者点风格的符号:

The PhpMVC_Tags Object-Method Notation

PHP Style sales = data->getSales

Dot Style sales = data.getSales

With Method Params staff = data.getValueBean("STAFF")

Retrieve Data Array products = data->getValueBean("PRODUCTS_ARRAY")

在下一个单元我们将看到如何使用模板标签系统将这些结合在一起来构建页面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值