我使用hook_form_alter向节点添加了一个字段,我可以看到它很好,但现在我想保存在该字段中输入的数据。我需要做些什么才能实现?
答案 0 :(得分:4)
当您更改表单时,还需要向模块添加表单提交处理程序;这样,您的模块将在提交表单时被调用,您可以保存您添加的字段的值。
如果有多个按钮,则最好将提交处理程序添加到您需要处理的特定按钮。例如,假设表单有两个提交按钮:“保存”和“删除”;如果使用$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中有多个表单时单击的按钮,不应再依赖它,也可能不存在。