Как я могу найти идентификатор формы формы?

Как мне получить идентификатор формы моей формы? Я только начал создавать свои модули, и я замер. Я получил этот код от кого-то другого и пытаюсь его настроить:

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';
  }
}
22 голоса | спросил enchance 24 J0000006Europe/Moscow 2011, 21:27:09

8 ответов


17

Попробуйте распечатать переменные формы с помощью функции PHP print_r .

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

Когда вы заходите на страницу, на которой находится форма, отображаются переменные (и имя).

Более простой способ доступа (или, скорее, просмотра) информации будет использовать функцию dpm () , предоставляемую Devel module . Вы можете использовать его так же, как вы использовали print_r.

ответил Bart 24 J0000006Europe/Moscow 2011, 23:23:52
35

Поиск идентификатора FORM без установки модуля

Найти идентификатор формы очень легко не нужно устанавливать модули и все

ШАГ 1: Откройте страницу перехода на страницу редактирования (ИЛИ проверьте свою форму).

ШАГ 2: , если его форма узла найти узел-форма "в элементе проверки

Поиск идентификатора формы проверьте, что вы находитесь в элементе формы .

ШАГ 3: см. прикрепленный образ выделенный зеленый текст - это идентификатор формы

ШАГ 4: ВАЖНО Наконец, если вы хотите использовать его в hook_form_alter(), замените hypen на подчеркивание . >

Например: yourform_id_with_content_type_name_form

Как и мудрый, вы можете найти id любой формы в drupal, все, что вам нужно сделать, это проверить> найти элемент формы и найти атрибут ID и использовать его

Надеюсь, это поможет:)

ответил DEVARAJ JOHNSON 12 Jpm1000000pmMon, 12 Jan 2015 18:34:09 +030015 2015, 18:34:09
11

Если ваш веб-форму находится на странице «www.mydomain.com/node/351», то ваш идентификатор формы будет «webform_client_form_351». Итак, независимо от вашего низа - это ваш идентификатор формы.

ответил JasmineM 3 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 03 Sep 2012 06:10:57 +0400 2012, 06:10:57
5

Если вы знаете, где код, который определяет форму, которую вы хотите изменить, посмотрите там. Идентификатор формы - это просто имя функции, определяющей эту форму.

Например, Views определяет функцию views_ui_edit_view_form в строке 875 views /includes /admin.inc. Фильтр «Иерархический выбор» ищет этот идентификатор формы в строке 50 иерархического_селекта /modules /hs_taxonomy_views.module в функции hood_form_alter.

ответил David L 25 J0000006Europe/Moscow 2011, 07:47:28
5

Используйте Получить форму ID , чтобы легко найти идентификатор формы любой формы в Drupal.

Вот цитата из его страницы проекта:

  

При наведении курсора на любую форму вы увидите контекстную ссылку. Расширяя ссылку, вы увидите идентификатор формы. Нажмите на ссылку, и вы увидите модальное окно с возможностью копирования идентификатора формы и hook_form_FORM_ID_alter ().

     

Этот модуль устарел. Он был улучшен, расширен и переименован как Отладка формы Devel ; используйте его вместо этого.

Раскрытие информации: Я поддерживаю эти модули.

ответил Tim 2 Maypm13 2013, 16:08:29
3

В качестве кода, о котором вы сообщили, ищет идентификатор формы формы узла, есть два случая.

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 () .

Во втором случае IF-оператор тот же, что и для Drupal 6.

if (isset($form['type']) && isset($form['#node']) && $form['type']['#value'] . '_node_form' == $form_id) { /* … */ }
ответил kiamlaluno 26 J0000006Europe/Moscow 2011, 17:50:47
3

Используйте функцию drupal_set_message(), чтобы отобразить идентификатор формы.

function hook_form_alter(&$form, $form_state, $form_id) {
drupal_set_message($form_id);
// other codes
}
ответил Utsav Sinha 15 Maypm14 2014, 15:39:01
2

Сначала установите модуль Devel . Затем создайте модуль, например, код ниже

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

Затем вы можете увидеть ВСЕ детали формы, такие как идентификатор формы, имена полей формы и т. д.

ответил sokratis 27 Maypm15 2015, 12:41:19

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132