[风雨者]

山高路远,风雨兼程!

伍维波ID:letsflytogether
80211次访问,排名1175好友8人,关注者90
一个非计算机专业毕业的,带着对计算机的热爱,如今从事在软件开发领域。我想,我已经证明了专业不应是我们就业的标尺。
除了软件开发,我的爱好还有篮球和美食。
letsflytogether的文章
原创 67 篇
翻译 0 篇
转载 58 篇
评论 115 篇
伍子的公告
    没有比人更高的山,
    没有比脚更长的路。
------------------------
    既然选择了远方,
    便只顾风雨兼程。
------------------------
    失败只有一种,
    就是半途而废。
------------------------
    天下难事必作于易,
    天下大事必作于细。
------------------------
    从用户的角度考虑,
    你就成功了一半。
------------------------
月 [下月] [上月]
最近评论
cqg1220:机柜
badonly:原来模板技术是这样的!!!谢了~~~
apollosun:恭喜啊

女儿就是宝,享福了啊

我女儿现在虚岁4岁,太可爱了,我每天下班回家的感觉就象过节。
letsflytogether:phpMVC是我两三年前接触的一个框架,为什么我选择它呢,是因为当时我首先接触了JAVA的Struts,学起来很好理解.但是如今我发现这个框架用起来稍嫌烦琐,代码更新也挺慢的.PHP语言同类型的框架还有cakePHP,ZendFramework,Symfony等,它们的发展都挺好的,而已有些是原生就支持ajax,你可以看看这些框架.其实框架是次要,最重要的还是思想.只不过有些时候思想过于抽象……
tjbaso:我暂时先把MVC搞定,接着就去弄XAJAX,天津用PHP的很少,可能还是去北京闯闯了,你的文章对我们来说是很有价值的。谢谢你。
文章分类
收藏
相册
个人风采
精品收藏
文章贴图
个人网站
女儿的博客
我在ITPUB上的博客
我在世界经理人上的博客
技术网站
CSDN
MSDN
UML软件工程组织
中国UI设计网
蓝色理想
软件工程专家网
休闲娱乐
学习网站
ICXO
网页设计师
金桥译港世界通
友情链接
heiyeluren的Blog(RSS)
博客中国上的琴剑楼
小肥羊
汉博园——陈希成
韦子的空中楼阁
资源网站
中国盟动力
太平洋电脑网
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 php.MVC系列教程之视图收藏

新一篇: php.MVC系列教程之分配器 | 旧一篇: php.MVC系列教程之动作

在讲解ActionDispatcher之前,我们先来熟悉一下视图,也叫做模板资源。

在前面我们已经提及在本实例中我们使用简单的页面模板来作为显示组件。这些模板包含一些PHP标签来使用在前面创建的表单数据对象。这种技更多地适合于小型应用,在大型应用程序中,开发者可以使用phplib::OOHForms 或 PEAR::HTML_QuickForm来处理显示。

不管使用哪一种技术,应用程序模板要按照与业务逻辑分离的标准来设计,这样UI就不用学习PHP程序。在本例中,模板没有包含任何业务逻辑代码,只使用预先定义的数据对象。

本例我们使用了两个模板资源,salesReportIndex.tpl是主页,假如我们在处理表单的过程中发现输入错误,我们就在上面显示错误的消息。salesReport.tpl作为简单的公司报表显示预先定义的数据。

在salesReportIndex.tpl页允许用户输入用户名、密码以及角色,在前面我们讲述了怎样在Action类中验证用户权限是否可以访问公司报表。

下面是删减了的salesReportIndex.tpl

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
   <title>Sales Report Index Page</title>
   <link rel='stylesheet' type='text/css' href="./style/man.css">
</head>

<body leftmargin='2' topmargin='2' marginwidth='2' marginheight='2'>

<table class='header'>
   <tr>
      <td align="center">
         <font class="pageHeader">Sales Report Index Page</font>
      </td>
   </tr>
</table>

<h3>Welcome to Our Sales Reporting Page</h3><br>

...

<font color='red'>
<?php
print ($er = $errors->getItemString('report_auth_failed')) ? $er.'<br>': '';
print ($er = $errors->getItemString('logon_username_reqd')) ? $er.'<br>': '';
print ($er = $errors->getItemString('logon_password_reqd')) ? $er.'<br>': '';
?>
</font>

<form action='Main.php?do=salesReport' Method='POST'/>
<table class='' border=1>
   <tr>
      <td bgcolor='#EFEFEF'>
         Username:
      </td>
      <td>
         <input type='text' Name='uname' value='<?php print $form->username ?>' />
      </td>
   </tr>
   <tr>
      <td bgcolor='#EFEFEF'>
         Password:
      </td>
      <td>
         <input type='text' Name='pword' value='<?php print $form->password ?>' />
      </td>
   </tr>
   <tr>
      <td bgcolor='#EFEFEF'>
         User Role:
      </td>
      <td>
         <input type='text' Name='urole' value='<?php print $form->userrole ?>' />
      </td>
   </tr>
</table>
<input type='submit' name='submit' Value='Submit' />

</body>
</html>


这就是一个标准的网页加上一些PHP标签。
 
首先我们来看一下这几句:

<?php
print ($er = $errors->getItemString('report_auth_failed')) ? $er.'<br>': '';
print ($er = $errors->getItemString('logon_username_reqd')) ? $er.'<br>': '';
print ($er = $errors->getItemString('logon_password_reqd')) ? $er.'<br>': '';
?>

这里我们使用预先定义的错误关键字比如'report_auth_failed'来访问错误信息。假如是一个NULL值,就插入''。这些对象都是通过ReportActionDispatcher来产生的,我们将在后面介绍。

接下来再看看:

 <form action='Main.php?do=salesReport' Method='POST'/>

通过前面的介绍相信大家一定能看懂了。

然后就是表单输入标签:"Username"; "Password" 和 "User Role"。我们来看看'Username'域

 <input type='text' Name='uname' value='<?php print $form->username ?>'/>

我们看到了一个标准的HTML文本输入框,在value属性里,我们使用了简单的PHP语句来得到表单对象$form中的username属性,$form实际就是SalesReportForm的实例对象,其他两个输入域类似。

提交按钮的用法没变。

 <input type='submit' name='submit' Value='Submit'/>

当用户提交正确的表单域时,销售报表页就会被显示。

销售报表页用一个表格来显示销售数据

下面是一个删减了的销售报表模板(salesReport.tpl):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
...
<h4>Sales Reports (Millions of Dollars AU)</h4>
<table class='idxTable' bgcolor='#C0C0C0'>
<tr class='idxTableHeader'>
   <td>Report Description</td>
   <td>Revenues</td>
</tr>
<tr class='idxTableRow'>
   <td class='idxTableCell' nowrap>
      Northern Sector
   </td>
   <td class='idxTableCellData' nowrap>
      $ <?php print $data->salesNorth ?>
   </td>
</tr>
...
</table>
...
</body>
</html>

这也是一个非常简单的网页文件
在<td ... />标签中包含了PHP标签用于访问$data对象的salesNorth属性:

 <?php print $data->salesNorth ?>

$data对象实际是在SalesReportAction中创建的,在ActionDispatcher章节我们会看到:

$data = $request->getAttribute('FORM_DATA');

其余行也是一样,分别显示$data的其他属性:salesSouth; salesEast 和 salesTerrit.

最终生成的销售报表如下所示:


 

发表于 @ 2004年12月31日 08:27:00|评论(loading...)|编辑

新一篇: php.MVC系列教程之分配器 | 旧一篇: php.MVC系列教程之动作

评论:没有评论。

发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © 伍子