【问题标题】:handling submission with a "Form Maker"-created form使用“Form Maker”创建的表单处理提交
【发布时间】:2014-03-06 14:45:44
【问题描述】:

我正在使用 Drupal 7 并且必须使用 Form Maker (https://drupal.org/project/drupal-form) 模块。由于它不是正常形式,我不知道如何像Drupal form submission Q/A 解释正常形式那样做类似钩子的事情。

这些数据库内表单的“提交后操作”的可用选项是:

  1. 保持状态。
  2. 文章链接。
  3. 显示自定义文本。
  4. 重定向到一个 URL。

有什么方法可以处理表单提交吗?例如:如果使用(例如)选项4,有没有办法在我指定的url中引用提交表单的表单状态? (或通过了解+引用提交的记录来恢复该数据的任何机制)。

顺便说一句,我是一个完全的 drupal n00b,在 Form Maker 文档中找不到关于那个特殊问题的 TFM 到 R(所以我可以遵循 RTM 原则)。

【问题讨论】:

    标签: php forms drupal drupal-7


    【解决方案1】:

    看起来这个模块仍然使用表单 API,所以你应该可以使用 hook_form_alter() 来修改这些表单。我确信这些表单的 ID 有某种命名约定,这将允许您将更改专门应用于表单生成器表单。

    如果您需要自定义表单提交的处理,您可以使用#submit 表单属性包含您自己的提交处理程序。注意:链接中的示例将提交处理程序添加到表单中的字段,但在大多数情况下,我将提交处理程序添加到表单数组本身。 (即$form['#submit'] = array("submit_callback")

    编辑以响应 cmets

    调用 hook_form_alter() 时不需要引用 form_id。相反,您可以全局调用它,这将导致 drupal 在每个表单上调用您的钩子。正如您从我提供的文档链接中看到的那样,$form_id 被传递给函数,您可以使用它来有条件地修改表单。请查看文档页面上的 cmets 以获取使用示例。

    除非这些表单是使用第三方服务嵌入的,否则如果此模块实际上是合法的,它将通过表单 API 挂钩其表单。实现 hook_form_alter(),并打印出传递给函数的 form_id。转到上面有这种表格之一的页面,看看打印了什么。

    (另外,[form_id]_form_alter() 不是在特定表单上调用此挂钩的正确语法。应该是 hook_form_[form_id]_alter(),其中 hook 是您的模块名称。)

    【讨论】:

    • 当我在数据库中搜索时,我找不到像你说的那样的 id(即命名约定),但有两个数字 id(一个用于数据库表 form_maker_table,一个用于节点 id)。所以我不能那样做 _form_alter() 和 _form_submit() ,因为它们会是 88_form_alter() 和 88_form_submit()。
    • 顺便说一句,表单钩子drupalcode.org/project/drupal-form.git/blob/…
    • 找到了入口点:在允许这种钩子的意义上,它似乎不是一个“合法”的形式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 2018-10-27
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多