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 に答える