EDIT: 2011-02-07 更詳細的 hook_form_alter 例子
hook_submit() 是每一張form 提交的時候會經過的 hook
可以用作發電郵之類的自定義動作
類似的, hook_validate() 是驗證每一張 form 的時候會經過的hook
可以自定義更多驗證的 logic
而從Drupal 5.x 之中, hook_submit() 的 function callback 可以在form API 使用如下 syntax:
<?php
$form['submit']['#submit'] = array('function1','function2');
?>
那 function1 和 function2 都會在 hook_submit() 之中callback 了
而 Drupal 6.x 之中, #submit 在不再在 submit button 之中定義:
<?php
$form['#submit'][] = 'my_module_submit_handler'
?>
雖然 D5 的方法都可以, 但便不可以用 hook_form_alter() 從一個 module 修改另一個module 的 form 了
例如, contact form 需要一個contact number,
submit 時將 contact number 加到 body 之內:
<?php
function my_module_form_alter($form,&$form_statues) {
$form['#submit'][] = 'my_module_submit_handler';
}
function my_module_submit_handler($form,&$form_statues){
//processing
}
?>
EDIT: 2011-02-07 更詳細的 hook_form_alter 例子