为什么我应该使用Drupal的Form API和Ajax框架而不是仅仅通过调用node_save()实现我自己的解决方案?

max*_*son 0 drupal drupal-7 drupal-ajax drupal-forms

我希望用户能够通过AJAX提交节点和评论.我还想对节点和注释表单做一些相当广泛的自定义.

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

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

jak*_*ska 5

从技术上讲,是的,你可以做到这一点没有任何不良影响.有时我不得不从feed导入数据并手动使用node_save.

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

例如,在灵活性方面,您决定要在表单中添加CAPTCHA字段.您所要做的就是启用CAPTCHA模块并指定您想要的表单,它将为您完成.有很多第三方模块可以让你做这样的事情.

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

如果您只是为了完成项目而不花时间学习新东西,请确保您可以手动完成所有操作.我可以向你保证,任何看起来你的代码的drupal开发人员对你的工作都会有很低的评价.根据您的情况,这可能也可能不重要.但实际上,您错过的最重要的事情是易于维护和灵活性.

所以回顾一下:

优点:

  • 它会工作
  • 快捷方便
  • 自在

缺点:

  • 失去灵活性
  • 更难维护
  • 无法利用drupals形成小部件/帮助器
  • 无法利用第三方模块
  • 来自其他开发者的耻辱
  • 肮脏的感觉缺乏睡眠
  • 永恒的诅咒