0

ノードフォームを単純化するのが好きです。過去の私のトリックの 1 つは、ある種のデフォルトを強制したい場合に、新しいノードの作成時に CCK 要素を条件付きで非表示にすることでした。私のお気に入りのトリックの 1 つは、Prepopulateモジュールによって設定されたものをすぐに削除することです。私にとって残念なことに、最近の#after_buildベースのメカニズムへの移行により、ウィジェットを操作する方法であらゆる種類の衝突が発生しているようです。

これは私が以前に行っていたことですhook_form_alter()

  $form['field_my_nodereference_field'][0]['#type'] = 'hidden';
  $form['field_my_nodereference_field'][0]['#value'] = $form['field_my_nodereference_field'][0]['#default_value']['nid'];
  $form['field_my_nodereference_field'][0]['#parents'] = array('field_my_nodereference_field', 0, 'nid');

しかし、このゲームを でプレイしようとする#after_buildと、hidden型の検証、つまりnodereference_autocomplete_validation. 条件付きで CSS ファイルを追加することに頼りました。これは私を悲しくさせます。

4

1 に答える 1

1

隠すだけでは不十分です。これを試してください:

$form['field_my_nodereference_field'][0]['#type'] = 'nodereference_hidden';

タイプが CCK フィールドの場合、このフォーマット _hidden を渡す必要があります

たとえば、私が使用した単純なテキスト フィールドの場合

$form['field_srt'][0]['#type'] = 'text_hidden';

または私が使用したファイルフィールドフィールドの場合

$form['field_myfile'][0]['#type'] = 'filefield_hidden';
于 2010-10-12T11:52:10.413 に答える