编写提交函数

老葛的Drupal培训班 Think in Drupal

提交函数是表单通过验证后负责实际的表单处理的函数。只有在表单验证完全通过,并且表单没有被标记为重新构建时,它才会执行。提交函数通常需要修改$form_state['redirect']。
    如果在表单被提交以后,你想让用户跳转到另一页面,那么你就需要返回一个Drupal路径,也就是用户接下来要访问的路径:
 
function formexample_form_submit($form, &$form_state) {
    // Do some stuff.
    ...
    // Now send user to node number 3.
    $form_state['redirect'] = 'node/3';
}
 
    如果你有多个函数用来处理表单提交(参看本章前面的“提交表单”一节),只有最后一个设置$form_state['redirect']的函数返才拥有最后的发言权。可以通过在表单中定义#redirect属性来覆写提交函数的重定向(参看本章前面的“重定向用户”一节)。通常使用hook_form_alter()来实现这一点。
 
提示 $form_state['rebuild'] 标记也可以设置在提交函数中,就像验证函数中一样。如果设置了,那么所有的提交函数都将运行,但是所有的重定向值都将被忽略,而表单将使用提交了的值进行重构。在向一个表单中添加可选字段时,这一点非常有用。
 

Drupal版本: