web-dev-qa-db-ja.com

フォームがノードタイプフォームであることを確認するにはどうすればよいですか?

カスタムモジュールを作成していて、hook_form_alter()にいくつかの条件を追加して、フォームがノードタイプフォームであることを確認します。

フォームがノード用かどうかを確認する機能はありますか?

1

hook_form_alter()の代わりにノード編集フォーム(ノードを編集できるフォーム)を参照している場合は、 hook_form_BASE_FORM_ID_alter() を実装する必要があります。これは、基本フォームのフォームIDがわかっている場合に使用されるhook_form_alter()の特定の実装です。あなたの場合、Bookモジュールが hook_form_node_form_alter() でどのように機能するかを正確にbook_form_node_form_alter()に実装する必要があります。

function book_form_node_form_alter(&$form, &$form_state, $form_id) {
  $node = $form['#node'];

  // Omissis.
}

Admin/structure/types/manageにあるフォームを参照していて、コンテンツタイプのプロパティを編集できる場合は、hook_form_FORM_ID_alter()を実装する必要があります。これは、hook_form_alter()特定のフォームIDに対して実行されます。この場合、node_typeです。これは、コメントモジュールで comment_form_node_type_form_alter() を実行するものです。フォームが表示されるコンテンツタイプを知る必要がある場合は、$form['#node_type']->typeを使用できます。

3
kiamlaluno

hook_form_node_form_alterを使用できます。

例:

function my_module_form_node_form_alter(&$form, &$form_state, $form_id) {
  $type = $form['#node']->type;
}
0
Ahmad