PHP.MVC的模板标签系统(一)


Posted in PHP onSeptember 05, 2006

    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"
   ...
    </view-resources>

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类.

PHP 相关文章推荐
PHP 文件编程综合案例-文件上传的实现
Jul 03 PHP
PHP实用函数分享之去除多余的0
Feb 06 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
May 27 PHP
php简单创建zip压缩文件的方法
Apr 30 PHP
Yii2实现上下联动下拉框功能的方法
Aug 10 PHP
PHP 闭包详解及实例代码
Sep 28 PHP
PHP查询大量数据内存耗尽问题的解决方法
Oct 28 PHP
php array_udiff_assoc 计算两个数组的差集实例
Nov 12 PHP
php实现数组纵向转横向并过滤重复值的方法分析
May 29 PHP
基于PHP常用文件函数和目录函数整理
Aug 17 PHP
PHP 枚举类型的管理与设计知识点总结
Feb 13 PHP
TP5框架实现上传多张图片的方法分析
Mar 29 PHP
apache+mysql+php+ssl服务器之完全安装攻略
Sep 05 #PHP
Windows下PHP5和Apache的安装与配置
Sep 05 #PHP
玩转图像函数库―常见图形操作
Sep 03 #PHP
生成静态页面的PHP类
Jul 15 #PHP
删除无限级目录与文件代码共享
Jul 12 #PHP
PHP截取中文字符串的问题
Jul 12 #PHP
最令PHP初学者头痛的十四个问题
Jul 12 #PHP
You might like
分页详解 从此分页无忧(PHP+mysql)
2007/11/23 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
JavaScript 密码强度判断代码
2009/09/05 Javascript
使用JQuery进行跨域请求
2010/01/25 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
2014/11/04 Javascript
Bootstrap Paginator分页插件使用方法详解
2016/05/30 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
vuex实现简易计数器
2016/10/27 Javascript
js 模仿锚点定位的实现方法
2016/11/19 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
微信小程序开发注意指南和优化实践(小结)
2019/06/21 Javascript
微信小程序 冒泡事件原理解析
2019/09/27 Javascript
Node.js文本文件BOM头的去除方法
2020/11/22 Javascript
python二叉树的实现实例
2013/11/21 Python
在Python下尝试多线程编程
2015/04/28 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
Django使用模板后无法找到静态资源文件问题解决
2019/07/19 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
说一下mysql, oracle等常见数据库的分页实现方案
2012/09/29 面试题
大一学生的职业生涯规划书范文
2014/01/19 职场文书
服务员岗位职责
2014/01/29 职场文书
2014植树节活动总结
2014/03/11 职场文书
2014年妇产科工作总结
2014/12/08 职场文书
2015年保送生自荐信
2015/03/24 职场文书
2016五一劳动节慰问信
2015/11/30 职场文书
Spring Data JPA的Audit功能审计数据库的变更
2021/06/26 Java/Android
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python
Python+tkinter实现高清图片保存
2022/03/13 Python