web-dev-qa-db-ja.com

ノード参照選択リストでデフォルト値を選択するhook_form_alter

コンテンツタイプの選択リストでノード参照オプションを自動選択するロジックを追加しようとしています。以下で設定しようとしています。

$form['field_my_field']['#default_value'][0]['nid'] = 5;

5はnidです。値はフォームに正しく設定されていますが、ページにレンダリングされるとき、選択リストのオプションは選択されていません。

何が悪いのですか?

2
Rod

CCKは hook_form_alter() で値を変更するために少しブードゥーを必要とします。特別なタイプを実装する必要があります:after_buildなので、このコードをcustom.module

//Declare the callback for after_build for page node form
function custom_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'page_node_form) {
    $form['#after_build'][] = 'custom_after_build';
  }
}

function custom_after_build($form, &$form_state) {
  //Set my node ref to 5
  $form['field_node']['nid']['nid']['#value'][0] = 5;
  //you can set more than one using 
  $form['field_node']['nid']['nid']['#value'][2] = 6;
  //have a look at the form after after_build
  dsm($form);
  return $form;
}

私は 前の回答 を採用しましたが、ノード参照はさらに混乱します;)

2
tostinni

ドキュメントによると:

'#default_value' => variable_get('field_my_field','5');

ところで、おそらくJavaScriptを使用するのが最も簡単な方法ですか?

1
Codium

直接値を割り当てます。例えば.

$form['field_my_field']['#default_value'] = 5;
0
Shoaib Nawaz