Drupal Form API
Form API
Drupal 擁有一個application programming interface(API)來產生,驗證,處理HTML表單。Form API 抽象來說就是崁入陣列的屬性(properties)和值(value)。這個陣列會讓Drupal呈現出form。有以下幾點:
- 利用個陣列讓form engine產生HTML
- 結構化處理資料,可以編輯修改表單
- 任何form的元素可以對應任何theme function
- 可以附加驗證或處理到任何form
- 針對注入攻擊保護form
了解Form運作
Form:建立、驗證、運行
Form API的運作流程
Drupal的form有三個步驟:驗證、提交、重導向。
可以使用drupal_get_form來了解運作
初始化
有三個重要的變數$form_id每個form都會有自己一個ID $formform的陣列結構 $form_state有關於form的資料
設定一個token
在初始化的時候Drupal都會設定一個私鑰來防止攻擊,這個金鑰是在初始化時被髓機產生出來的,他將會被儲存在variables這個table裡面如同drupal_private_key
設定一個ID
一個隱藏的ID將會被發送到瀏覽器作為form的一部分,這個ID會來定義form,而將會被drupal_get_form()當作第一個參數
收集所有可能的定義元素
接下來系統內建的hook_element_info()將會被呼叫,可以用來處理再module內的元素