drupal表单和HTML表单之间有什么区别

时间:2013-05-11 16:30:45

标签: drupal drupal-7 drupal-6 drupal-forms

为什么我们使用“drupal form”虽然我们可以通过“HTML表单”来做所有事情?

2 个答案:

答案 0 :(得分:5)

Drupal Form API提供了一种标准化方法,用于在Drupal站点中显示,验证和提交表单。它允许其他模块与您设计的表单进行交互,并根据需要更改或添加字段以修改表单行为。

通过使用表单API,您可以输出完全包含在类和ID中的表单,您的主题可以按照适合您网站图形设计的方式进行样式设置。

表单API输出表单是安全的,这意味着它确保用户提交的表单由您的站点生成,而不是用于将恶意数据提供给数据库的虚假页面的一部分。验证过程允许程序员清理任何数据,以避免SQL注入和其他潜在的安全威胁。它还提供了一种避免多个用户同时修改相同内容的方法。

我还认为将表单构建为结构化数组可以使表单设计和维护更加直接。

这些只是我个人关于使用表单API的重点。您可能希望在Drupal Form API文档中的this link阅读更多内容。

答案 1 :(得分:3)

Pamatt's answer编写得很好,但由于你的问题不是很有建设性/确定性,我试图添加一些遗漏点。

  

为什么我们使用“drupal形式”虽然我们可以通过“HTML”来做所有事情   表格“?

没有“Drupal形式”这样的东西。他们仍然使用相同的<input><select>等标记,而且所有内容仍然是HTML。但模块有机会改变形式,而不用搞乱HTML。

这是一个正常的Drupal形式:

 $form['text'] = array(
    '#type' => 'textfield',
    '#maxlength' => 120, 
    '#title' => t('Name'),
 );

这只是一个PHP数组,如果你想修改maxlength,你可以很容易地做到这一点。如果是<input name="text" maxlength="120" />怎么办?如果特定模块想要更改它,则必须使用某种正则表达式来执行此操作。

此外,Drupal Form API生成的表单可以具有* extra **验证功能,以及提交功能。

** extra:*如上例所示,您不需要验证文本长度是否超过120.有人可以编辑HTML并为此字段发送200个字符,但表单API可以拒绝它。表单API可以进行基本验证,例如确保填写必填字段,不超过maxlength,请求是CSRF安全,选择列表的值实际上在允许列表中等等。

如果您坚持需要使用原始HTML表单,则必须添加自己的表单令牌,缓存,数据验证器等。完成后,您将发现它已经完成并且名称为“Form API” ”。