コンテンツタイプの選択リストでノード参照オプションを自動選択するロジックを追加しようとしています。以下で設定しようとしています。
$form['field_my_field']['#default_value'][0]['nid'] = 5;
5はnidです。値はフォームに正しく設定されていますが、ページにレンダリングされるとき、選択リストのオプションは選択されていません。
何が悪いのですか?
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;
}
私は 前の回答 を採用しましたが、ノード参照はさらに混乱します;)
ドキュメントによると:
'#default_value' => variable_get('field_my_field','5');
ところで、おそらくJavaScriptを使用するのが最も簡単な方法ですか?
直接値を割り当てます。例えば.
$form['field_my_field']['#default_value'] = 5;