使用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 路由定義
<?xml version="1.0" encoding="UTF-8"?>
<ae:configurations xmlns:ae="http://agavi.org/agavi/config/global/envelope/1.0"
xmlns="http://agavi.org/agavi/config/parts/routing/1.0">
<ae:configuration>
<routes>
...
<!-- action for contact form "/contact" -->
<route name="contact" pattern="^/contact$" module="Default"
action="Contact" />
</routes>
</ae:configuration>
</ae:configurations>