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內的元素