为什么我们使用“drupal form”虽然我们可以通过“HTML forms”来做每一件事?
2 回答
Drupal Form API 提供了一种标准化的方法来在您的 Drupal 站点中显示、验证和提交表单。如果需要,它允许其他模块与您设计的表单交互并更改或添加字段以修改表单行为。
通过使用表单 API,您可以输出完全包装在类和 id 中的表单,您的主题可以以适合您网站图形设计的方式设置样式。
表单 API 输出的表单是安全的,这意味着它确保用户提交的表单是由您的站点生成的,而不是旨在将恶意数据输入数据库的虚假页面的一部分。验证过程允许程序员清理任何数据以避免 SQL 注入和其他潜在的安全威胁。它还提供了一种避免多个用户同时修改相同内容的方法。
我还认为将表单构建为结构化数组会使表单设计和维护更加简单。
这些只是我个人关于使用表单 API 的亮点。您可能希望在 Drupal 表单 API 文档中的此链接上阅读更多内容。
帕马特的回答写得很好,但由于你的问题不是很有建设性/确定性,我试图补充一些缺失的点。
为什么我们使用“drupal form”虽然我们可以通过“HTML forms”来做每一件事?
没有“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** 验证函数以及提交函数。
**额外:* 根据上面的示例,您不需要验证文本长度不超过 120。有人可以编辑 HTML 并为此字段发送 200 个字符,但表单 API 可以拒绝它。表单 API 可以进行基本验证,例如确保填写必填字段、不超过最大长度、请求是 CSRF 安全的、选择列表的值实际上在允许列表中等。
如果您坚持需要使用原始 HTML 表单,则必须添加自己的表单令牌、缓存、数据验证器等。完成后,您会发现它已经完成并命名为“表单 API”。