web-dev-qa-db-ja.com

hook_form_alterのノードオブジェクトにアクセスする方法

hook_form_alter()のノードオブジェクトにアクセスしようとしていますが、次のエラーがスローされます。

注意:未定義のインデックス:#node in themename_form_alter()

私が使用しているコードは次のとおりです。

_function themename_form_alter(&$form, $form_state, $form_id)) {
  $node = $form['#node'];
}
_

hook_form_alter()でノードオブジェクトにアクセスする方法はありますか?

3
nagakumar

すべてのフォームにノードへの参照が含まれているわけではありません。ノードオブジェクトを含むのは単なるノードフォームですが、Drupalから出力されるすべてのフォームに対してhook_form_alter()が呼び出されます。

次のことを行う必要があります。

  • _$form['#node']_が設定されていることを確認します

    _if (isset($form['#node'])) {
      // …
    }
    _
  • 任意のコンテンツタイプのノード編集フォームを変更する場合はhook_form_node_form_alter()のような別のフックを使用し、_$type_コンテンツタイプのノード編集フォームの場合はhook_form_$type_node_form_alter()を使用します。

8
kiamlaluno