快速业务通道

使用Agavi进行MVC编程简介,第2部分 (二)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
listing" -->
   <route name="listing" pattern="^/listing" module="Listing">
    <route name=".display" pattern="^/display/(id:\d+)contentquot; action="Display" />
   </route>

  </routes>
 </ae:configuration>
</ae:configurations>

这个路由定义希望 id 变量被包含为 URL GET 请求的一部分,并通过在路由定义中使用捕捉组来表明。这个变量表示汽车列表的唯一标识符,与 MySQL数据库中的 listing.RecordID 主键字段对应。记住,您必须将这个变量添加到 DisplayAction 的验证器,这样它才能通过 Agavi 的输入验证过滤器。

这也是您见到的第一个嵌套路由例子。在嵌套路由定义中,内部路由继承与外部路由匹配的模式,然后可以进一步修改该模式。在实现 CRUD 功能时,这个特性提供了极大的便利,其中 URL 具有相同的基础部分和不同的后缀,如下所示:

/object/display/23
/object/add
/object/edit/23
/object/delete/23

使用以上的路由定义时,包含 /listing 模式的 URL 首先与外部路由进行匹配。然后,Agavi 检查剩余的模式,并根据模式包含的内容决定哪个子路由最匹配,并将请求指向该路由的操作。当然,以上的定义仅包含一个子路由,但不要着急,随后将添加更多的子路由。

步骤 3:定义验证规则

因为仅有一个输入变量被传递到 DisplayAction,所有验证非常简单 —— 只需使用一个AgaviNumberValidator(清单 16):

清单 16. Listing/DisplayAction 验证器

<?xml version="1.0" encoding="UTF-8"?>
<ae:configurations
 xmlns="http://agavi.org/agavi/config/parts/validators/1.0"
 xmlns:ae="http://agavi.org/agavi/config/global/envelope/1.0"
 parent="%core.module_dir%/Listing/config/validators.xml"
>
 <ae:configuration>

  <validators method="read">
   <validator class="number">
    <arguments>
     <argument>id</argument>
    </arguments>
    <ae:parameters>
     <ae:parameter name="type">int</ae:parameter>
     <ae:parameter name="required">true</ae:parameter>
     <ae:parameter name="min">1</ae:parameter>
    </ae:parameters>
   </validator>
  </validators>

 </ae:configuration>
</ae:configurations>

步骤 4:编写操作代码

处理了路由和验证之后,下一个步骤是为 DisplayAction 指定视图。因为 DisplayAction 将只处理 GET 请求,所以您必须指定一个与生成的视图同名的 executeRead() 方法。清单 17 显示了编写出的操作:

清单 17. Listing/DisplayAction 定义

<?php
class Listing_DisplayAction extends WASPListingBaseAction
{

 public function getDefaultViewName()
 {
  return ''Success'';
 }

 public function executeRead(AgaviRequestDataHolder $rd)
 {
  return ''Success'';
 }
}
?>

步骤 5:编写视图代码

现在,您将进入这个小节的核心部分:设置 DisplaySuccessView 以显示汽车列表。清单 18 显示了编写出的视图:

清单 18. Listing/DisplaySuccessView 定义

<?php
class Listing_DisplaySuccessView extends WASPListingBaseView
{
 public function execu

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号