我使用 hook_form_alter 向节点添加了一个字段,我可以看到它很好,但现在我当然希望在该字段中输入的数据也被保存。我该怎么做才能发生这种情况?
1 回答
修改表单时,还需要在模块中添加表单提交处理程序;这样,您的模块将在提交表单时被调用,并且您可以保存您添加的字段的值。
如果有多个按钮,则最好将提交处理程序添加到您需要操作的特定按钮。例如,假设表单有两个提交按钮:“保存”和“删除”;如果添加提交处理程序,$form[#submit][] = "my module_form_submit";
则即使单击“删除”按钮也会调用提交处理程序。
正如表单按钮中所报告的那样,可以定义自定义 #submit 和 #validate 处理程序:
所有表单都可以具有“#validate”和“#submit”属性,其中包含在用户提交数据时要执行的验证和提交处理程序列表。以前,如果一个表单具有多个提交按钮来启动不同的操作(例如更新记录与删除记录),则需要检查传入的 $form_values['op'] 以获取单击按钮的名称,然后执行不同的代码基于它的价值。
现在,如果需要,可以在每个单独的表单按钮上定义 #validate 和 #submit 属性。
当使用特定按钮提交表单时,将使用其验证和提交处理程序,而不是默认的表单级处理程序。如果在按钮级别未指定任何内容,则将使用表单级别的处理程序。
此外,表单值中的“op”元素已弃用,不应依赖报告:
如上所述,每个按钮都可以具有与之关联的“#validate”和“#submit”功能。因此,应该有一个按钮来提交表单并调用普通
$form_id_validate
和$form_id_submit
处理程序。任何需要调用不同验证或提交功能的附加按钮都应具有特定于按钮的功能。另请注意,表单值中的“op”元素,对应于 Drupal 5.x 中表单中有多个时单击的按钮,不应再依赖并且可能不存在。