Как мне получить идентификатор формы моей формы? Я только начал делать свои модули, и я нахожусь в тупике. Я получил этот код от кого-то еще и пытаюсь настроить его:
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';
}
}
hook_form_alter()
. Учитывая также сообщенный код, я бы сказал, что этот вопрос отличается.Ответы:
Попробуйте напечатать переменные формы с помощью PHP-функции print_r .
Когда вы посещаете страницу, на которой находится форма, будут отображаться переменные (и имя).
Более простой способ доступа (или, скорее, просмотра) информации - использование функции dpm (), предоставляемой модулем Devel . Вы можете использовать его так же, как и print_r.
источник
$form
переменной.dpm($form_id);
Поиск идентификатора формы без установки модуля
Найти идентификатор формы очень просто, нет необходимости устанавливать модули и все
ШАГ 1: Откройте вас, перейдите на страницу редактирования (ИЛИ проверьте вашу форму).
ШАГ 2: если это форма узла, найдите « форму узла » в элементе inspect
проверьте, что вы находитесь в элементе формы .
ШАГ 3: см. Прикрепленное изображение, выделенный зеленый текст является идентификатором формы
ШАГ 4: ВАЖНО Наконец, если вы хотите использовать его в качестве
hook_form_alter()
замены Hypen с подчеркиваниемНапример:
yourform_id_with_content_type_name_form
Точно так же вы можете найти id любой формы в drupal, все, что вам нужно сделать, это проверить-> найти элемент формы и найти атрибут ID и использовать его.
Надеюсь, это поможет :)
источник
name
атрибут которого имеет значение «form_id». 2) Посмотрите наvalue
атрибут входного элемента - значением атрибута является требуемый идентификатор формы. Пример: форма комментария на узлах истории имеет идентификатор формы "comment_comment_node_story_form". Если вам нравится, вы можете включить эту новую информацию в свой ответ.Если ваша веб-форма расположена по адресу «www.mydomain.com/node/351», тогда идентификатором вашей формы будет «webform_client_form_351». Итак, какой бы ни был ваш nid - это ваш идентификатор формы.
источник
Если вы знаете, где находится код, определяющий форму, которую вы хотите изменить, посмотрите там. Идентификатор формы - это просто имя функции, определяющей эту форму.
Например, Views определяет функцию views_ui_edit_view_form в строке 875 views / includes / admin.inc. Фильтр представлений Hierarchical Select ищет этот идентификатор формы в строке 50ierarchical_select / modules / hs_taxonomy_views.module в функции hood_form_alter.
источник
Используйте
drupal_set_message()
функцию для отображения идентификатора формы.источник
Используйте модуль Получить идентификатор формы, чтобы легко узнать идентификатор формы любой формы в Drupal.
Вот цитата об этом со страницы проекта:
Раскрытие: я поддерживаю эти модули.
источник
Поскольку код, который вы сообщили, ищет идентификатор формы формы узла, есть два случая.
Drupal 6
Если код пытается изменить форму, используемую для установки параметров для типа контента, он должен использовать следующий оператор IF.
Если код пытается изменить форму редактирования узла, тогда в коде должен использоваться следующий оператор IF.
Drupal 7 и выше
В первом случае оператор IF должен быть следующим:
Используя другой подход, предполагая, что 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.
источник
Сначала установите модуль Devel. Затем создайте модуль, как показано ниже:
Затем вы можете увидеть ВСЕ детали формы, такие как идентификатор формы, имена полей формы и т. Д.
источник