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


Posted in PHP onSeptember 05, 2006

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' @>
      </td>
   </tr>
   <!-- PAGE CONTENTS -->
   ...
   <!-- PAGE FOOTER -->
   ...
</table>
...
</center>
</body>
</html>
    在这里例子种pageHeader.ssp页眉文件内容将被插入到主页面上当这个页面被发送到用户浏览器上.这个页眉文件包含了一个表达式:
<!-- Page Header -->
 <span>
    <@ =viewConfig.getAppTitle @>
 </span>
    这个表达式将被编译并且将在运行时输出为:
<!-- Page Header -->
 <span>
    Flash Jacks' Sleek Tab Site
 </span>

声明

    声明允许我们在模板种声明一个页面级别的变量,或者甚至其他包含页面.一个声明看起来像以下代码:
    <@ 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'>
   ...
</table>
</center>
...
<!-- end_page_contents_include -->
    这些页变量将被输出为:
<!-- Content section heading -->
<h4>Jack's Super Deals for : May 2010</h4>
...
...

表达式

    表达式标签允许我们在模板页中执行表达式.表达式的结果将被包含进模板页.以下表达式将被用来显示一个简单的字符串(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") 
    在下一个单元我们将看到如何使用模板标签系统将这些结合在一起来构建页面.

PHP 相关文章推荐
十天学会php(2)
Oct 09 PHP
一个连接两个不同MYSQL数据库的PHP程序
Oct 09 PHP
php判断字符以及字符串的包含方法属性
Aug 30 PHP
PHP MVC模式在网站架构中的实现分析
Mar 04 PHP
实例介绍PHP的Reflection反射机制
Aug 05 PHP
PHP超牛逼无限极分类生成树方法
May 11 PHP
适用于初学者的简易PHP文件上传类
Oct 29 PHP
PHP使用curl模拟post上传及接收文件的方法
Mar 04 PHP
php 修改上传文件大小限制实例详解
Oct 23 PHP
CodeIgniter框架基本增删改查操作示例
Mar 23 PHP
ThinkPHP实现生成和校验验证码功能
Apr 28 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
Apr 27 PHP
PHP.MVC的模板标签系统(二)
Sep 05 #PHP
PHP.MVC的模板标签系统(一)
Sep 05 #PHP
apache+mysql+php+ssl服务器之完全安装攻略
Sep 05 #PHP
Windows下PHP5和Apache的安装与配置
Sep 05 #PHP
玩转图像函数库―常见图形操作
Sep 03 #PHP
生成静态页面的PHP类
Jul 15 #PHP
删除无限级目录与文件代码共享
Jul 12 #PHP
You might like
重置版游戏视频
2020/04/09 魔兽争霸
使用php4加速网络传输
2006/10/09 PHP
php 无限极分类
2008/03/27 PHP
PHP 编程的 5个良好习惯
2009/02/20 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
2014/06/12 PHP
php实现对文件压缩简单的方法
2019/09/29 PHP
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
两种简单实现菜单高亮显示的JS类代码
2010/06/27 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
文本框只能选择数据到文本框禁止手动输入
2013/11/22 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
2014/09/13 Javascript
使用phantomjs进行网页抓取的实现代码
2014/09/29 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
JS实现仿QQ面板的手风琴效果折叠菜单代码
2015/09/11 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
2016/06/12 Javascript
微信小程序开发之Tabbar实例详解
2017/01/09 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
[00:12]DAC2018 no[o]ne亮相SOLO赛 他是否如他的id一样无人可挡?
2018/04/06 DOTA
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
python re正则表达式模块(Regular Expression)
2014/07/16 Python
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
实例说明Python中比较运算符的使用
2015/05/13 Python
详解Django中间件执行顺序
2018/07/16 Python
python查看文件大小和文件夹内容的方法
2019/07/08 Python
keras 获取某层输出 获取复用层的多次输出实例
2020/05/23 Python
Python文件操作及内置函数flush原理解析
2020/10/13 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
高中毕业自我鉴定
2013/12/19 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
太行山上观后感
2015/06/05 职场文书
2015年度工程师评职称工作总结
2015/10/14 职场文书
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python