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 相关文章推荐
超级简单的发送邮件程序
Oct 09 PHP
用PHP来写记数器(详细介绍)
Oct 09 PHP
php 常用字符串函数总结
Mar 15 PHP
php启动时候提示PHP startup的解决方法
May 07 PHP
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
Jun 01 PHP
解析argc argv在php中的应用
Jun 24 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
Jun 23 PHP
php获取CSS文件中图片地址并下载到本地的方法
Dec 02 PHP
微信公众平台之快递查询功能用法实例
Apr 14 PHP
ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
Aug 05 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 20 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
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
php 向访客和爬虫显示不同的内容
2009/11/09 PHP
服务器变量 $_SERVER 的深入解析
2013/07/02 PHP
WampServer搭建php环境时遇到的问题汇总
2015/07/23 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
Javascript中的异步编程规范Promises/A详细介绍
2014/06/06 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
JS+CSS实现带小三角指引的滑动门效果
2015/09/22 Javascript
基于nodejs+express(4.x+)实现文件上传功能
2015/11/23 NodeJs
分享两款带遮罩的jQuery弹出框
2015/12/30 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
Bootstrap轮播图学习使用
2017/02/10 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
2017/04/22 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
webpack配置打包后图片路径出错的解决
2018/04/26 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python任务调度实例分析
2015/05/19 Python
python如何在循环引用中管理内存
2018/03/20 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
从0开始的Python学习014面向对象编程(推荐)
2019/04/02 Python
python绘制雷达图实例讲解
2021/01/03 Python
2021年值得向Python开发者推荐的VS Code扩展插件
2021/01/25 Python
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
Bed Bath & Beyond加拿大官网:购买床上用品、浴巾、厨房电器等
2019/10/04 全球购物
华为C++笔试题
2014/08/05 面试题
毕业自我鉴定范文
2013/11/06 职场文书
优秀共产党员先进事迹
2014/01/27 职场文书
单位工作证明格式模板
2014/10/04 职场文书
群众路线查摆问题整改措施
2014/10/10 职场文书
2015年材料员工作总结
2015/04/30 职场文书
详解php中流行的rpc框架
2021/05/29 PHP