老葛的Drupal培训班 Think in Drupal
前面的方式不错,但是如果有很多模块来修改表单,而每个表单都传递给所有的hook_form_alter()实现,你的心里就开始犯嘀咕了。“这太浪费了吧,”你可能会想。“为什么不仅仅根据表单ID构造一个函数并调用它呢?”你想得不错。Drupal完全可以实现你的想法。下面的函数也将修改用户登录表单:
function formexample_form_user_login_alter(&$form, &$form_state) {
$form['warning'] = array(
'#value' => t('We log all login attempts!'),
'#weight' => -5
);
// Change 'Log in' to 'Sign in'.
$form['submit']['#value'] = t('Sign in');
}
函数的名字是这样构造的:
modulename + 'form' + form ID + 'alter'
例如
'formexample' + 'form' + 'user_login' + 'alter'
将生成
formexample_form_user_login_alter