如何更改表单提交处理程序?


16

由于某种原因,我需要在每个单个文本字段中以某种形式替换某些字符(如果存在),就在它们存储在数据库中之前。换句话说,我需要一个钩子,可以在其中获取所有提交的数据并替换其字符。
我找到了这个解决方案:

function hook_form_alter($form, $form_state, $form_id) {
  $form['#submit'] = 'my_custom_submission_function';
}

但这不是一个好主意,因为我也必须照顾其余的提交进度。我只需要替换一些字符。有挂钩吗?有什么解决方案?

Answers:


22

$form['#submit']存储一组表单提交处理程序。使用您提供的代码,仅添加自己的代码即可覆盖它。为了获得想要的结果,您应该像这样将提交处理程序添加为数组中的第一个元素:

array_unshift($form['#submit'], 'mymodule_custom_submission');

以正确的形式获取正确的值并替换一些字符本身可能是一个更大的问题。您可能希望缩小需要更改的表单/字段的范围,以确保不破坏任何内容。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.