フォームのフォーム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';
}
}
PHP function print_r でフォーム変数を印刷してみてください。
function hook_form_alter(&$form, &$form_state, $form_id) {
print_r($form);
}
フォームがあるページにアクセスすると、変数(および名前)が表示されます。
情報にアクセスする(または表示する)より簡単な方法は、 Devel module によって提供される dpm() 関数を使用することです。 print_rと同じように使用できます。
フォームIDの検索は非常に簡単ですモジュールをインストールする必要はありませんおよびすべて
ステップ1:編集ページに移動することであなたを開きます(またはフォームを検査します)。
STEP 2: if a node form find "node-form" in inspect element
form要素にいることを確認します。
ステップ3:添付画像を参照してくださいハイライトされた緑テキストはフォームのIDです
ステップ4:重要最後にhook_form_alter()
で使用する場合は、hypenをnderscoreに置き換えます。
例えば: yourform_id_with_content_type_name_form
同様に、drupalで任意のフォームのIDを見つけることができます。あなたがしなければならないのは、inspect-> find form elementで、ID属性を検索して使用することだけです。
それが役に立てば幸い :)
ウェブフォームが「www.mydomain.com/node/351」にある場合、フォームIDは「webform_client_form_351」になります。つまり、nidが何であれ、それがフォームIDです。
変更するフォームを定義するコードの場所がわかっている場合は、そこを見てください。フォームIDは、そのフォームを定義する関数の名前です。
たとえば、Viewsは、views/includes/admin.incの875行に関数views_ui_edit_view_formを定義しています。階層選択ビューフィルターは、hood_form_alter関数のhierarchy_select/modules/hs_taxonomy_views.moduleの50行目でそのフォームIDを探します。
フォームIDを表示するには、drupal_set_message()
関数を使用します。
function hook_form_alter(&$form, $form_state, $form_id) {
drupal_set_message($form_id);
// other codes
}
Get Form ID モジュールを使用して、Drupal内の任意のフォームのフォームIDを簡単に見つけることができます。
以下は、プロジェクトページからの引用です。
フォームにカーソルを合わせると、コンテキストリンクが表示されます。リンクを展開すると、フォームIDが表示されます。リンクをクリックすると、コピー可能なフォームIDとhook_form_FORM_ID_alter()フックの提案を含むモーダルウィンドウが表示されます。
このモジュールは非推奨です。 Devel form debug ;として改善、拡張、ブランド変更されました。代わりに使用してください。
開示:これらのモジュールのメンテナーです。
報告したコードはノードフォームのフォームIDを探しているため、2つのケースがあります。
コードがコンテンツタイプの設定に使用するフォームを変更しようとしている場合は、次の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) { /* … */ }
_
最初のケースでは、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) { /* … */ }
_
最初にインストール Devel module 。次に、以下のコードのようなモジュールを作成します
function hook_form_alter(&$form, &$form_state, $form_id) {
dpm($form);
}
次に、フォームID、フォームのフィールド名など、フォームのすべての詳細を表示できます。