【发布时间】:2011-08-29 09:43:29
【问题描述】:
我使用 hook_form_alter 向节点添加了一个字段,我可以很好地看到它,但现在我当然希望在该字段中输入的数据也被保存。我该怎么做才能发生这种情况?
【问题讨论】:
标签: drupal drupal-forms drupal-hooks
我使用 hook_form_alter 向节点添加了一个字段,我可以很好地看到它,但现在我当然希望在该字段中输入的数据也被保存。我该怎么做才能发生这种情况?
【问题讨论】:
标签: drupal drupal-forms drupal-hooks
当你修改表单时,你还需要在模块中添加一个表单提交处理程序;这样,在提交表单时会调用您的模块,并且您可以保存您添加的字段的值。
如果有多个按钮,则最好将提交处理程序添加到您需要操作的特定按钮。例如,假设表单有两个提交按钮:“保存”和“删除”;如果您使用$form[#submit][] = "my module_form_submit"; 添加提交处理程序,则即使单击“删除”按钮也会调用提交处理程序。
如Form buttons can define custom #submit and #validate handlers报道的:
所有表单都可以具有“#validate”和“#submit”属性,其中包含用户提交数据时要执行的验证和提交处理程序列表。以前,如果一个表单具有多个提交按钮来启动不同的操作(例如更新记录与删除记录),则需要检查传入的 $form_values['op'] 以获取单击按钮的名称,然后执行不同的代码基于它的价值。
现在,如果需要,可以在每个单独的表单按钮上定义 #validate 和 #submit 属性。
当使用特定按钮提交表单时,将使用其验证和提交处理程序,而不是默认的表单级处理程序。如果在按钮级别未指定任何内容,则将使用表单级别的处理程序。
另外,The 'op' element in the form values is deprecated and should not be relied upon 报告:
如上所述,每个按钮都可以具有与之关联的“#validate”和“#submit”功能。因此,应该有一个按钮来提交表单并调用普通的
$form_id_validate和$form_id_submit处理程序。任何需要调用不同验证或提交功能的其他按钮都应该有button-specific functions。另请注意,表单值中的“op”元素,对应于 Drupal 5.x 中表单中有多个时单击的按钮,不应再依赖并且可能不存在。
【讨论】: