快速业务通道

使用Agavi进行MVC编程简介,第1部分:使用Agavi开辟一个新世界

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
http://agavi.org/agavi/config/parts/routing/1.0">
 <ae:configuration>
  <routes>
   <route pattern="" module="Welcome" action="Index" />
   ...
  </routes>
 </ae:configuration>
</ae:configurations>

一个路由项通常包含pattern、module和action属性。pattern属性指定路由匹配的URL模式,而module和action属性指出应该调用哪个模块和操作来响应请求。默认情况下,Agavi将使用它查找到的第一个匹配项;因此,作为一般规则,应该将最特别的路由安排在前面,越普通的路由位置越靠后。要更改这一行为,需要向路由添加一个 stop=false属性;这告诉 Agavi 在查找到匹配项之后仍然继续处理。

清单1 中的路由是一个非常普通的路由。它确保对于任何 URL请求,Agavi 都将调用Welcome模块的Index Action。这个操作由 Agavi 项目向导自动创建(作为一个 PHP 类),您可以在$WASP_ROOT/app/modules/Welcome/actions/IndexAction.class.php 上找到它。

清单2. Index Action

<?php
class Welcome_IndexAction extends WASPWelcomeBaseAction
{
 public function getDefaultViewName()
 {
  return ''Success'';
 }
}
?>

每个 Action 类都有一些标准方法,Agavi将使用这些方法决定如何处理不同类型的请求。例如,executeRead()方法指定如何处理 GET请求,而executeWrite()方法指定如何处理 POST请求。如果这两个方法都没有定义,那么每个 Action 至少必须有一个 getDefaultViewName()方法,它为操作指定默认的视图。从 清单2的代码中,可以看到IndexAction的默认视图被命名为Success。

根据 Agavi的文件命名约定,Welcome模块中的Index Action的Success 视图应该存储在$WASP_ROOT/app/modules/Welcome/views/IndexSuccessView.class.php 中。导航到该文件,您将看到类似于清单3的内容:

清单3. Success 视图

<?php
class Welcome_IndexSuccessView extends WASPWelcomeBaseView
{
 public function executeHtml(AgaviRequestDataHolder $rd)
 {
  $this->setupHtml($rd, ''simple'');
  $this->setAttribute(''agavi_release'', AgaviConfig::get(''agavi.release''));
 }
}
?>

在显示一个视图时,Agavi 自动地调用一个名为executeXXX()的方法,其中 XXX 对应于所需的输出类型。要生成 HTML 输出,视图必须包含一个 executeHtml()方法,它设置必要的模板变量,并且为显示准备模板。在本文的后面部分您将看到,还可以生成其他格式的视图。例如,要生成 XML 输出,需要定义一个 executeXml()方法,要生成 YAML 输出,需要定义一个 executeYaml()方法,等等。您可以通过setAttribute()方法在视图内部定义模板变量,然后在模板内部以 $t 数组的键的形式访问这些变量。

需要注意的是,由视图生成的HTML 标记不是存储在View 类文件本身,而是存储在另一个模板文件中。根据 Agavi 约定,这个模板文件必须以视图的名称命名;因此,IndexSuccessView的模板位于$WASP_ROOT/app/modules/Welcome/templates/IndexSuccess.class.php。打开这个文件,您看到的HTML 标记将生成如清单4 所示的输出。

清单4. HTML 标记

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
 lang="en">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8&

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号