爲什麼我們使用「drupal表單」雖然我們可以通過「HTML表單」來做每一件事情?drupal表單和HTML表單之間有什麼區別
回答
Drupal Form API提供了一個標準化的方法來顯示,驗證和提交表單到您的Drupal站點。它允許其他模塊與您設計的表單進行交互,並修改或添加字段以修改表單行爲(如果需要)。
通過使用表單API,您可以輸出完全包裝在類和id中的表單,您的主題可以以適合您網站的圖形設計的方式進行設計。
表單API輸出表單是安全的,這意味着它確保用戶提交的表單由您的網站生成,而不是用於將惡意數據饋送到數據庫的虛假網頁的一部分。驗證過程允許程序員清理任何數據以避免SQL注入和其他潛在的安全威脅。它還提供了一種避免多個用戶同時修改相同內容的方法。
我也認爲將表單構建爲結構化數組可以使表單設計和維護更直接。
這些只是我個人關於使用表單API的亮點。您可能想在Drupal Form API文檔中的this link處閱讀更多內容。
Pamatt's answer寫得很好,但由於您的問題不是非常有建設性/明確性,我試圖添加一些缺失的點。
爲什麼我們使用「drupal表單」儘管我們可以通過「HTML 表單」來做每件事情?
有沒有這樣的事情「Drupal形式」。他們仍然使用相同的<input>
,<select>
等標籤,一切仍然是HTML。但模塊有機會改變形式沒有搞亂HTML。
這是一個正常的Drupal形式:
$form['text'] = array(
'#type' => 'textfield',
'#maxlength' => 120,
'#title' => t('Name'),
);
這僅僅是一個PHP數組,如果你要修改的最大長度,你可以很容易地做到這一點。如果是<input name="text" maxlength="120" />
?如果一個特定的模塊想要改變它,你必須使用某種正則表達式來做到這一點。
此外,由Drupal Form API生成的表單可以有額外的**驗證函數以及提交函數。
**額外:*根據上述示例,您不需要驗證文本長度不超過120.有人可以編輯HTML併爲此字段發送200個字符,但表單API可以拒絕它。 Form API可以進行基本驗證,例如確保填寫必填字段,不超過maxlength,請求是CSRF安全的,選擇列表的值實際上在允許列表中,等等。
如果您堅持需要使用原始的HTML表單,你必須添加你自己的表單標記,緩存,數據驗證器等。完成後,你會發現它已經完成並給出名稱「Form API」。
- 1. Javascript新FormData和HTML表單與(表單).serializeArray()之間的區別?
- 2. 表單數據和請求負載之間有什麼區別?
- 3. 字段和表單域之間有什麼區別?
- 4. 從html表單發佈和使用webclient類之間有什麼區別?
- 5. Zend表單與常規HTML表單之間的區別Zend Framework
- 6. 顯示錶單的下列方法之間有什麼區別?
- 7. 在Python中列表和列表[:]之間有什麼區別?
- 8. Android中的活動和簡單表單之間的根本區別是什麼?
- 9. 清單文件和xml文件之間有什麼區別android
- 10. 使用compose()和簡單的flatMap()之間有什麼區別?
- 11. 退出和退出配置單元之間有什麼區別
- 12. Ruby--單引號和雙引號之間有什麼區別?
- 13. 靜態屬性和單例之間有什麼區別?
- 14. 點對點鏈接和單播之間有什麼區別?
- 15. Singleton對象和sessionfactory單例對象之間有什麼區別
- 16. 註冊表和註冊表配置單元有什麼區別
- 17. 「層」和「層」之間有什麼區別?
- 18. Tableau和QlikView之間有什麼區別
- 19. Microsoft.CompilerServices.AsyncTargetingPack和Microsoft.Bcl.Async之間有什麼區別?
- 20. @Entity和@embeddable之間有什麼區別
- 21. ContentObservable和DataSetObservable之間有什麼區別?
- 22. touchmove和gesturechange之間有什麼區別?
- 23. :notification.flags和notification.defaults之間有什麼區別?
- 24. proc和lambda之間有什麼區別?
- 25. :: after和after之間有什麼區別?
- 26. read()和io.read()之間有什麼區別?
- 27. Request()和Request.Form()之間有什麼區別?
- 28. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之間有什麼區別?
- 29. getA()和this.getA()之間有什麼區別?
- 30. (int)和intval()之間有什麼區別?