使用Agavi 进行MVC编程简介,第2部分: 使用Agavi和Doctrine添加表单和数据库支持1
简介
在本系列的第 1 部分中,我介绍了Agavi并解释了一些特性,这些特性让 Agavi 适合用于构建可扩展、遵从标准的Web应用程序。通过使用样例应用程序 Web Automobiles Sales Platform (WASP),我逐步向您展示了创建新的Agavi 项目的基础知识,帮助您理解 Agavi 推荐的文件系统布局,并熟悉 Agavi 的命令行构建脚本。我还介绍了所有 Agavi应用程序的基础组件 —— 操作(Actions)、视图(Views)和路由(Routes)—— 并展示了一些内置的Agavi 输入验证器。
尽管 Agavi 过去常常用于提供静态内容,但是它也能很好地处理更复杂的情况。在第 2 部分中,您将检验 Agavi 处理复杂内容的能力 —— 在接下来几个小节中,您将学习如何接收、验证和处理来自 Web表单的输入,并将Agavi应用程序连接到 MySQL 数据库。
使用 Agavi 创建表单
首先,这里快速浏览了WASP应用程序的索引页面(图1):
图1. WASP应用程序的索引页面

您在上一篇文章中已经准备好代码,以处理连接到静态内容的两个链接。我们继续前进,开始处理 “联系我们” 链接。顾名思义,这个链接指向一个联系表单,通过该表单可以联系到汽车交易商。实现这个功能的总体过程与在前一篇文章中构建 StaticContentAction 的过程相似。
首先启动 Agavi 构建脚本并输入下列值:
shell> agavi action-wizarD
...
Module name: Default
Action name: Contact
Space-separated list of views to create for Contact [Success]: Input Error Success
这将创建一个新的ContactAction 和其他 3 个视图。您已经熟悉 ContactSuccessView 和 ContactErrorView 这两个标准的视图,它们根据操作的成功或失败而显示。第三个视图ContactInputView 是全新的;它是用户看到的第一个视图,并且显示将接受用户输入的Web表单。
为$WASP_ROOT/app/routing.xml 文件中的ContactAction 添加一个新的路由,如清单1所示:
清单1. Default/ContactAction 路由定义
...
