来源:http://trac.seagullproject.org/wiki/Concepts/ValidateProcessDisplay

Validate Process Display 工作流程

Seagull所使用的validate/process/display工作流程意味着所有经过系统的数据必须被以下的方法处理:

  • validate:粗糙的(未加工的,封装在SGL_Request对象中)$_REQUEST被传递给这个方法,经过验证后,可接受的数据被映射给$input对象
  • process
    1. 如果数据有效:如果所有数据是有效的,$input对象被传递给process方法,然后process方法重定向到从请求的URI中解析出的action方法中
      • 数据据被处理被完后,就被映射到$output对象
    2. 如果数据无效:如果有一个个的验证失败了,请求就会被认为是无效的,然后数据连同适当的出错提示信息直接传给display()方法,如,提示用户更正错误,process()方法就被跳过了。
  • display:这个方法用来执行所有action方法的共同操作。这些操作一般是后期的数据处理。比方说,你有5个action方法都需要为表单创建复选框,那么在这里就可以一次把它们全部搞定。

当上面的操作执行完毕,流程又回到了处理核心,如果你使用的是SGL_MainProcess,这就意味:$output对象的相关信息已经被提取出来了,通过配置信息确定了呈现引擎,数据根据目标客户端设备格式化并被传回到过滤链以进行后期处理。

典型的例子是:

  • 一个通讯录表单送出,表单数据被认为是有效的
  • 执行商业逻辑通过eamil发送详细资料并将请求数据保存到数据库
  • 为用户创建一封确认邮件
  • 指定emailSent.html模板
  • 实例化HTML呈现器,使用配置信息指定的Flexy模板引擎
  • 结合$output或缓存的数据编译模板
  • 发送生成的text/html header响应给客户端浏览器 — 鑫豪 2007/05/18 11:16鑫豪 2007/05/18 11:16
 
concepts/validateprocessdisplay.txt · 最后更改: 2010/05/30 00:21 (外部编辑)
 
Except where otherwise noted, content on this wiki is licensed under the following license:GNU Free Documentation License 1.2