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中的登陆login
Jan 18 PHP
PHP通用分页类page.php[仿google分页]
Aug 31 PHP
php数组转换js数组操作及json_encode的用法详解
Oct 26 PHP
php如何解决无法上传大于8M的文件问题
Mar 10 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
May 10 PHP
ThinkPHP单字母函数(快捷方法)使用总结
Jul 23 PHP
PHP实现格式化文件数据大小显示的方法
Jan 03 PHP
PHP flush 函数使用注意事项
Aug 26 PHP
如何打开php的gd2库
Feb 09 PHP
PHP清除缓存的几种方法总结
Sep 12 PHP
使用 laravel sms 构建短信验证码发送校验功能
Nov 06 PHP
php格式文件打开的四种方法
Feb 24 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调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
thinkPHP实现MemCache分布式缓存功能
2016/03/23 PHP
简介PHP的Yii框架中缓存的一些高级用法
2016/03/29 PHP
javascript得到XML某节点的子节点个数的脚本
2008/10/11 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
ExtJS的拖拽效果示例
2013/12/09 Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
2014/02/23 Javascript
JavaScript获取URL中参数querystring的方法详解
2016/10/11 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
layui弹出层效果实现代码
2017/05/19 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
JavaScript实现音乐自动切换和轮播
2017/11/05 Javascript
js中url对象化管理分析
2017/12/29 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
JSON.stringify()方法讲解
2019/01/31 Javascript
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
Python对列表排序的方法实例分析
2015/05/16 Python
Python如何生成树形图案
2018/01/03 Python
python创建文件备份的脚本
2018/09/11 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
Python通用唯一标识符uuid模块使用案例
2020/09/10 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
Python爬虫分析微博热搜关键词的实现代码
2021/02/22 Python
法国时尚童装网站:Melijoe
2016/08/10 全球购物
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
"火柴棍式"程序员面试题
2014/03/16 面试题
高中校园广播稿
2014/01/11 职场文书
出国签证在职证明
2014/09/20 职场文书
2014年体育部工作总结
2014/11/13 职场文书
三八妇女节致辞
2015/07/31 职场文书
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL