【发布时间】:2023-03-23 21:40:01
【问题描述】:
我是 Drupal 的新手,但我想创建一个插件。该插件需要某种带有高级 jQuery 的多页表单(我已经看过 jQuery 模块)。 该插件需要当前登录用户的详细信息,并且还将与外部数据库进行通信。
我一直在看有关模块创建等的教程。但它们大多涵盖了简单表单的创建,而我想要创建的更多的是一个插件。
【问题讨论】:
我是 Drupal 的新手,但我想创建一个插件。该插件需要某种带有高级 jQuery 的多页表单(我已经看过 jQuery 模块)。 该插件需要当前登录用户的详细信息,并且还将与外部数据库进行通信。
我一直在看有关模块创建等的教程。但它们大多涵盖了简单表单的创建,而我想要创建的更多的是一个插件。
【问题讨论】:
多页表单完全是拖累。 Pro Drupal Development,有一个关于这个主题的非常好的部分,如果你正在做任何 Drupal 开发,我强烈推荐这本书。
在网上我发现以下文章也非常有用(尽管我最终还是使用了自己的系统)。
http://www.nicklewis.org/using-chaos-tools-form-wizard-build-multistep-forms-drupal-6
【讨论】:
这里有一个不错的例子: http://thedrupalblog.com/creating-multipage-form-using-forms-api
为了充分利用这一点,您需要对表单 API 非常友好: http://drupal.org/node/204270
遗憾的是 Drupal.org 似乎缺少 Drupal 6.x 的解释(尽管奇怪的是 5.x 和 4.7 存在很多)。
【讨论】:
多步骤表单本质上很复杂,但有一些方法可以使其更容易。我建议您查看Ctools module 提供的多步表单工具。 Nick Lewis 的这篇博文解释了如何使用它。
我认为在使用 javascript/jQuery 创建表单之前应该三思而后行。 Javascript 是改善用户界面的好方法,但由于它是客户端技术,因此可以轻松操作。您不应该只依赖 javascript 来进行输入验证、表单值的临时存储以及控制表单不同步骤之间的流程。
【讨论】:
我觉得这很奇怪,但我认为您不想使用 Drupal Forms API。
Forms API 提供了许多安全功能(唯一令牌、提交后重建表单以进行比较以确保处理正确的表单等)并允许其他模块修改您的表单,但我认为其中很多功能会妨碍您的 jEditable 表单。使用 Forms API 的多页表单并不难,但 jEditable 元素会。
您的模块可以简单地添加一个带有页面回调函数的菜单项,该函数为您组合您的 jEditable 表单。这与 Drupal 所提供的“普通 PHP”脚本世界差不多。
【讨论】: