web-dev-qa-db-fra.com

Comment puis-je trouver l'ID de formulaire d'un formulaire?

Comment obtenir l'identifiant de formulaire de mon formulaire? Je viens de commencer à fabriquer mes modules et je suis au point mort. J'ai reçu ce code de quelqu'un d'autre et j'essaie de le personnaliser:

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

Essayez d'imprimer les variables du formulaire avec PHP function print_r .

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

Lorsque vous visitez la page où se trouve le formulaire, les variables (et le nom) s'affichent.

Un moyen plus facile d'accéder (ou plutôt de visualiser) les informations serait d'utiliser la fonction dpm () fournie par le module Devel . Vous pouvez l'utiliser de la même manière que vous utiliseriez print_r.

17
Bart

Recherche de FORM ID sans installer de module

Trouver l'ID du formulaire est très facilepas besoin d'installer des modules et tout

ÉTAPE 1: Ouvrez-vous pour aller sur sa page d'édition (OU inspectez votre formulaire).

ÉTAPE 2: si c'est un forme de nœud trouvez "forme de nœud" dans l'élément inspect

Finding the form id vérifiez que vous êtes dans l'élément formulaire.

ÉTAPE 3: voir l'image jointe le surligné en vert le texte est l'ID du formulaire

ÉTAPE 4: IMPORTANT Enfin, si vous souhaitez l'utiliser dans hook_form_alter() remplacez le hypen par souligné

Par exemple: yourform_id_with_content_type_name_form

Comme sage, vous pouvez trouver l'identifiant de n'importe quel formulaire dans drupal tout ce que vous avez à faire est d'inspecter-> trouver l'élément de formulaire et rechercher l'attribut ID et l'utiliser

J'espère que cela aide :)

37
DEVARAJ JOHNSON

Si votre formulaire Web se trouve sur "www.mydomain.com/node/351", votre ID de formulaire sera "webform_client_form_351". Donc, quel que soit votre nid - c'est votre ID de formulaire.

11
JasmineM

Si vous savez où se trouve le code qui définit le formulaire que vous souhaitez modifier, regardez-le. L'identifiant de formulaire n'est que le nom de la fonction définissant ce formulaire.

Par exemple, Views définit la fonction views_ui_edit_view_form à la ligne 875 de views/includes/admin.inc. Le filtre des vues de sélection hiérarchique recherche cet identifiant de formulaire sur la ligne 50 de hierarchical_select/modules/hs_taxonomy_views.module dans une fonction hood_form_alter.

6
David L

Utilisez la fonction drupal_set_message() pour afficher l'ID du formulaire.

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

Utilisez le module Get Form ID pour trouver facilement l'identifiant de formulaire de n'importe quel formulaire dans Drupal.

Voici une citation à ce sujet sur sa page de projet:

En survolant n'importe quel formulaire, vous verrez un lien contextuel disponible. En développant le lien, vous verrez l'ID du formulaire. Cliquez sur le lien et vous verrez une fenêtre modale avec un identifiant de formulaire copiable et une suggestion de crochet hook_form_FORM_ID_alter ().

Ce module est obsolète. Il a été amélioré, étendu et rebaptisé Devel form debug ; utilisez-le à la place.

Divulgation: Je suis responsable de ces modules.

4
Tim

Comme le code que vous avez signalé recherche l'ID de formulaire du formulaire de noeud, il y a deux cas.

Drupal 6

Si le code tente de modifier le formulaire utilisé pour définir les paramètres d'un type de contenu, il doit utiliser l'instruction IF suivante.

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

Si le code essaie de modifier le formulaire de modification de nœud, le code doit utiliser l'instruction IF suivante.

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

Drupal 7 et supérieur

Dans le premier cas, l'instruction IF doit être la suivante:

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

En utilisant une approche différente, en supposant que mymodule est le nom court de votre module, vous pouvez utiliser mymodule_form_node_type_form_alter(&$form, &$form_state, $form_id). Depuis Drupal 7, tous les hooks utilisés pour modifier la forme implémentée par un autre module obtiennent $form_id Comme dernier paramètre. Voir hook_form_alter () , - hook_form_FORM_ID_alter () , hook_form_BASE_FORM_ID_alter () .

Dans le second cas, l'instruction IF est la même que celle utilisée pour Drupal 6.

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

Installez d'abord module Devel . Ensuite, créez un module comme le code ci-dessous

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

Ensuite, vous pouvez voir TOUS les détails d'un formulaire, comme l'ID du formulaire, les noms de champs d'un formulaire, etc.

1
sokratis