0

我正在使用 mymodule_form_alter 钩子

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

任何人都知道如何做到这一点。我正在使用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';
}
4

1 回答 1

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';
}
于 2012-09-04T12:52:10.923 回答