web-dev-qa-db-ja.com

フォームのフォームIDを見つけるにはどうすればよいですか?

フォームのフォームIDを取得するにはどうすればよいですか?モジュールの作成を開始したばかりで、停止しています。私は他の誰かからこのコードを入手し、それをカスタマイズしようとしています:

function hook_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'the form id for the node form') {
    $form['#submit'][] = 'my_custom_submit_handler';
  }
}
23
enchance

PHP function print_r でフォーム変数を印刷してみてください。

function hook_form_alter(&$form, &$form_state, $form_id) {
  print_r($form);
}

フォームがあるページにアクセスすると、変数(および名前)が表示されます。

情報にアクセスする(または表示する)より簡単な方法は、 Devel module によって提供される dpm() 関数を使用することです。 print_rと同じように使用できます。

17
Bart

モジュールをインストールせずにFORM IDを見つける

フォームIDの検索は非常に簡単ですモジュールをインストールする必要はありませんおよびすべて

ステップ1:編集ページに移動することであなたを開きます(またはフォームを検査します)。

STEP 2: if a node form find "node-form" in inspect element

Finding the form id form要素にいることを確認します。

ステップ3:添付画像を参照してくださいハイライトされた緑テキストはフォームのIDです

ステップ4:重要最後にhook_form_alter()で使用する場合は、hypennderscoreに置き換えます。

例えば: yourform_id_with_content_type_name_form

同様に、drupalで任意のフォームのIDを見つけることができます。あなたがしなければならないのは、inspect-> find form elementで、ID属性を検索して使用することだけです。

それが役に立てば幸い :)

37
DEVARAJ JOHNSON

ウェブフォームが「www.mydomain.com/node/351」にある場合、フォームIDは「webform_client_form_351」になります。つまり、nidが何であれ、それがフォームIDです。

11
JasmineM

変更するフォームを定義するコードの場所がわかっている場合は、そこを見てください。フォームIDは、そのフォームを定義する関数の名前です。

たとえば、Viewsは、views/includes/admin.incの875行に関数views_ui_edit_view_formを定義しています。階層選択ビューフィルターは、hood_form_alter関数のhierarchy_select/modules/hs_taxonomy_views.moduleの50行目でそのフォームIDを探します。

6
David L

フォームIDを表示するには、drupal_set_message()関数を使用します。

function hook_form_alter(&$form, $form_state, $form_id) {
drupal_set_message($form_id);
// other codes
}
4
Utsav Sinha

Get Form ID モジュールを使用して、Drupal内の任意のフォームのフォームIDを簡単に見つけることができます。

以下は、プロジェクトページからの引用です。

フォームにカーソルを合わせると、コンテキストリンクが表示されます。リンクを展開すると、フォームIDが表示されます。リンクをクリックすると、コピー可能なフォームIDとhook_form_FORM_ID_alter()フックの提案を含むモーダルウィンドウが表示されます。

このモジュールは非推奨です。 Devel form debug ;として改善、拡張、ブランド変更されました。代わりに使用してください。

開示:これらのモジュールのメンテナーです。

4
Tim

報告したコードはノードフォームのフォームIDを探しているため、2つのケースがあります。

Drupal 6

コードがコンテンツタイプの設定に使用するフォームを変更しようとしている場合は、次のIFステートメントを使用する必要があります。

_if ($form_id == 'node_type_form' && isset($form['identity']['type'])) { /* … */ }
_

コードがノード編集フォームを変更しようとしている場合、コードは次のIFステートメントを使用する必要があります。

_if (isset($form['type']) && isset($form['#node']) && $form['type']['#value'] . '_node_form' == $form_id) { /* … */ }
_

Drupal 7以降

最初のケースでは、IFステートメントは次のようになります。

_if ($form_id == 'node_type_form') { /* … */ }
_

別のアプローチを使用して、mymoduleがモジュールの短い名前であると仮定すると、mymodule_form_node_type_form_alter(&$form, &$form_state, $form_id)を使用できます。 Drupal 7なので、別のモジュールによって実装されたフォームを変更するために使用されるすべてのフックは、最後のパラメーターとして_$form_id_を取得します。 hook_form_alter() を参照してください hook_form_FORM_ID_alter()hook_form_BASE_FORM_ID_alter()

2番目のケースでは、IFステートメントはDrupal 6に使用されるものと同じです。

_if (isset($form['type']) && isset($form['#node']) && $form['type']['#value'] . '_node_form' == $form_id) { /* … */ }
_
3
kiamlaluno

最初にインストール Devel module 。次に、以下のコードのようなモジュールを作成します

function hook_form_alter(&$form, &$form_state, $form_id) {
  dpm($form);
}

次に、フォームID、フォームのフィールド名など、フォームのすべての詳細を表示できます。

1
sokratis