0

我希望用户能够通过 AJAX 提交节点和评论。我还想对节点和评论表单进行一些相当广泛的定制。

我花时间查看 Drupal 7 的 Form API 和 Ajax 框架的文档和代码示例,但我发现它非常复杂。因此,我只想在 HTML 中创建自己的表单并使用自己的 JavaScript 代码通过 Ajax 提交它。我还将设置一个特定的 URL 来处理这些 Ajax 请求,最终将在适当的时候node_save()调用。comment_save()

与通过 Form API 和 Ajax 框架相比,这样做的缺点是什么?我不是为了对社区做出贡献而创建模块。一切都只是为了我自己的网站。

4

2 回答 2

5

从技术上讲,是的,您可以这样做而不会产生不良影响。有时我不得不从提要中导入数据并手动使用 node_save。

您错过的是 drupal 提供的灵活性。例如,想要在表单中添加一个新复选框以指示特色项目?现在您必须手动更新表单以添加字段并更新提交处理程序以保存数据。如果您使用drupal 的系统,它会自动为您填充。

在灵活性方面,例如,您决定要在表单中添加 CAPTCHA 字段。您所要做的就是启用 CAPTCHA 模块并指定您想要的表单,它会为您完成。有一堆 3rd 方模块可以让你做这样的事情。

Drupals 表单系统还允许您添加更复杂的项目,例如日期选择器,甚至是托管文件上传,一旦您熟悉了 API,这可以为您节省大量时间。

如果您只是想完成项目而不是花时间学习新东西,那么您可以手动完成所有工作。我可以向您保证,任何在未来查看您的代码的 drupal 开发人员都会对您的工作有非常低的评价。根据您的情况,这可能重要也可能不重要。但实际上,您错过的最大的事情是易于维护和灵活性。

回顾一下:

优点:

  • 它会起作用的
  • 快捷方便
  • 舒服的

缺点:

  • 失去灵活性
  • 更难维护
  • 无法利用 drupal 表单小部件/助手
  • 无法利用 3rd 方模块
  • 其他开发者的耻辱
  • 肮脏的感觉导致睡眠不足
  • 永恒的诅咒
于 2012-02-13T18:41:44.903 回答
4

我猜通常的论点是关于可移植性,但是如果您不打算将这些模块移植到另一个 Drupal 站点,那么我想这会失败。

为其他模块提供基于某些全局/继承设置更改表单的机会也可以这样说,但是如果您真的不想要/需要此功能,那么它就不能真正用作反对的论据。

您将失去的一件事是内置的跨站点请求伪造保护。不过,只要您推出自己的版本,就应该没问题。

如果您打算经常使用 Drupal,我建议您习惯 FAPI...不过,一段时间后,使用 FAPI 实际上比编写自定义 HTML 更容易。

于 2012-02-13T17:38:51.053 回答