Drupal Form Alter hook

时间:2012-09-04 11:39:07

标签: drupal module drupal-7 drupal-modules

我正在使用mymodule_form_alter hook

我想在提交后更改表单字段的值。

任何人都知道如何做到这一点。我正在使用drupal7。

以下是代码

function check_domain_form_alter(&$form, &$form_state, $form_id) {
  switch ($form_id) {
    case "user_register_form":
      $form['#submit'][] = 'check_domain_user_register_form_submit';
      break;
  }
}

function check_domain_user_register_form_submit($form, &$form_state) {
  $form_state['input']['profile_main']['field_firm_company_name']['und'][0]['value']='test';
}

1 个答案:

答案 0 :(得分:3)

在此过程中调用提交处理程序的时间太晚......值字段值已经保存。您还想使用$form_state['values'],而不是$form_state['input']

如果您将代码移动到验证处理程序,那么您应该获得更多运气:

function check_domain_form_alter(&$form, &$form_state, $form_id) {
  switch ($form_id) {
    case "user_register_form":
      $form['#validate'][] = 'check_domain_user_register_form_validate';
      break;
  } 
}

function check_domain_user_register_form_validate($form, &$form_state) {
  $form_state['values']['profile_main']['field_firm_company_name']['und'][0]['value']='test';
}