양식의 양식 ID를 어떻게 찾을 수 있습니까?


22

양식의 양식 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';
  }
}


위의 질문에 대한 답변을 참조하십시오. 또한 귀하의 질문에 답변해야합니다
Laxman13

1
여기서 질문은 상당히 다릅니다. 양식 요소를 식별하는 방법을 묻지는 않지만의 구현에서 확인해야하는 양식 ID입니다 hook_form_alter(). 보고 된 코드가 주어지면이 질문이 다르다고 말할 것입니다.
kiamlaluno

답변:


17

PHP 함수 print_r로 폼 변수를 인쇄 해보십시오 .

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

양식이있는 페이지를 방문하면 변수 (및 이름)가 표시됩니다.

정보에 쉽게 액세스하거나 보는 방법은 Devel 모듈에서 제공하는 dpm () 함수를 사용하는 것 입니다. print_r을 사용하는 것과 같은 방식으로 사용할 수 있습니다.


1
보고 된 코드가 주어지면 $form변수 의 내용을 볼 필요가 없습니다 .
kiamlaluno

10
또한 $ form_id는 직접 인쇄 할 수있는 매개 변수입니다!
niksmac

1
당신이있는 경우 (STABLE)는 단지 활성화dpm($form_id);
없음 Sssweat에게

35

모듈을 설치하지 않고 양식 ID 찾기

양식 ID는 매우 쉽게 찾을 수 없는 모듈을 설치 할 필요가 없습니다 모든과

1 단계 : 편집 페이지로 이동하거나 양식을 검사합니다.

2 단계 : 해당 노드 양식 이 inspect 요소에서 " node-form "을 찾는 경우

양식 ID 찾기양식 요소 에 있는지 확인하십시오 .

3 단계 : 첨부 된 이미지에서 강조 표시된 녹색 텍스트는 양식의 ID입니다.

4 단계 : 중요 마지막으로 하이픈밑줄hook_form_alter()바꾸는 데 사용하려면

예를 들면 다음과 같습니다. yourform_id_with_content_type_name_form

마찬가지로 drupal에서 모든 양식의 ID를 찾을 수 있습니다. 검사-> 양식 요소 찾기 및 ID 속성을 검색하여 사용하십시오.

그것이 도움이되기를 바랍니다 :)


1
Drupal 8 사이트에서 주석 양식을 보호하려고 할 때 이것은 효과가 없었습니다. drupal.org 에 대한 이 의견에서 해결책을 찾았습니다 . 1) name속성 값이 "form_id" 인 숨겨진 입력 요소를 찾으십시오 . 2) 입력 요소의 value속성을 봅니다 . 속성 값은 원하는 양식 ID입니다. 예 : 스토리 노드의 주석 양식은 양식 ID "comment_comment_node_story_form"입니다. 원하는 경우이 새로운 정보를 답변에 포함시킬 수 있습니다.
herzbube

10

웹 양식이 "www.mydomain.com/node/351"에있는 경우 양식 ID는 "webform_client_form_351"입니다. 그래서, 당신의 니드가 무엇이든, 그것은 당신의 양식 ID입니다.


2
문제는 Webform 모듈에 관한 것이 아닙니다. 노드 편집 양식에 관한 것입니다.
kiamlaluno

문제는 노드 편집 양식에 관한 것이지만 웹 양식 양식 ID를 찾으려면 올바르게 작동합니다.
herci

이 대답은 맞습니다. 방금 테스트했습니다.
vicenteherrera

6

변경하려는 양식을 정의하는 코드의 위치를 ​​알고 있다면 여기를보십시오. 양식 ID는 해당 양식을 정의하는 함수의 이름 일뿐입니다.

예를 들어, Views는 views / includes / admin.inc의 875 행에서 views_ui_edit_view_form 함수를 정의합니다. 계층 선택보기 필터는 hood_form_alter 함수에서 hierarchical_select / modules / hs_taxonomy_views.module의 50 행에서 해당 양식 ID를 찾습니다.


4

drupal_set_message()기능을 사용 하여 양식 ID를 표시하십시오.

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

4

Drupal에서 양식 ID 얻기 모듈을 사용하여 양식의 양식 ID 를 쉽게 찾을 수 있습니다.

다음은 프로젝트 페이지에서 인용 한 것입니다.

모든 양식 위에 마우스를 올리면 사용 가능한 컨텍스트 링크가 표시됩니다. 링크를 확장하면 양식 ID가 표시됩니다. 링크를 클릭하면 복사 가능한 양식 ID와 hook_form_FORM_ID_alter () 후크 제안이있는 모달 창이 나타납니다.

이 모듈은 더 이상 사용되지 않습니다. Devel form debug 로 개선되고 확장되었으며 브랜드가 변경되었습니다 . 대신 사용하십시오.

공개 : 저는이 모듈의 관리자입니다.


3

보고 한 코드가 노드 양식의 양식 ID를 찾고 있으므로 두 가지 경우가 있습니다.

드루팔 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) { /* … */ }

드루팔 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) { /* … */ }

1

먼저 Devel 모듈을 설치 한 후 아래 코드와 같은 모듈을 만듭니다.

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

그러면 양식 ID, 양식의 필드 이름 등과 같은 양식의 모든 세부 사항을 볼 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.