it-swarm-ko.tech

Drupal의 기본 양식 중 하나를 표시하는 방법

Drupal 7의 기본 양식 중 하나의 수정 된 버전을 표시하는 데 사용하려는 모듈이 있습니다. 양식 ID는 user_profile_form이고 양식을 편집하는 데 사용되는 양식입니다. 사용자의 계정 정보.

그래서 이것은 내 모듈의 구조입니다.

  1. hook_menu 함수에 대한 페이지 콜백 포함-> user_exe_edit()->
  2. function user_exe_edit() 호출 drupal_get_form(input_simple_form)->
  3. 함수 input_simple_form($form, &$form_submit)

이제 ID가 " 'user_profile_form"인 Drupal 양식을 반환하려면 input_simple_form 함수가 필요합니다.

어떻게하나요?

3
Carlos Muñiz

user_profile_form()은 기존 함수이지만 모듈 파일에 정의되어 있지 않습니다. 즉, 함수가 정의 된 파일을 먼저로드해야합니다.

drupal_get_form()을 호출하여 동일한 모듈에 구현 된 양식 작성기에 정의 된 양식을 가져 오는 페이지 콜백을 정의하는 대신 다음 코드를 사용하여 메뉴 콜백을 정의합니다 (내가 작성하는 코드는 Drupal 7,하지만 필요하다면 Drupal 6)에 쉽게 적용 할 수 있습니다.

$items['path'] = array(
  'page callback' => 'drupal_get_form',
  'page arguments' => array('input_simple_form'),
  'file path' => drupal_get_path('module', 'user'),
  'file' => 'user.pages.inc',
);

양식 작성기의 코드는 다음과 유사 할 수 있습니다.

function input_simple_form($form, &$form_state) {
  $form = array_merge($form, drupal_get_form('user_profile_form', $account));
  // ...
}
  • ser_profile_form () 표시 할 프로필의 범주 인 세 번째 인수를 사용합니다. 기본값은 "계정"입니다. 누락 된 세 번째 인수에 대한 오류가 발생하면 해당 매개 변수도 명시 적으로 전달할 수 있습니다 (예 : drupal_get_form('user_profile_form', $account, 'account')에서와 같이 기본값 사용).
  • "user.pages.inc"는 Drupal 7 및 Drupal 6)에 user_profile_form() 양식 작성기를 포함하는 파일입니다. 오류가 발생하는 것은 Drupal가 파일을로드하도록 지시 한 경우에만 해당 파일이로드된다는 것입니다. 이는 "file"및 "file path"배열 인덱스를 사용하여 수행됩니다. ( " 파일 경로 "는 hook_menu()을 구현하는 모듈의 파일 사이에 파일이없는 경우에만 필요합니다.)
  • 자체 유효성 검사 및 제출 처리기를 사용해야하는 경우 input_simple_form()을 양식 작성기로 사용했습니다.
  • 내가 작성한 예제 코드에 정의되지 않은 $account 변수가 있습니다. 이것은 user_profile_form()에 필요한 필수 인수 중 하나입니다. 함수는 양식이 빌드되는 사용자 계정을 알아야하기 때문입니다. 이것이 사용자 프로필 양식에 사용 된 계정에 대한 사용자 개체를로드하거나 전역 $user의 값을 drupal_get_form('user_profile_form')에 전달해야하는 고유 한 양식 작성기를 사용하는 또 다른 이유입니다.
8
kiamlaluno

문제를 오해하고 있는지 잘 모르겠지만

return drupal_get_form('user_profile_form');

무엇을 찾고 있습니까?

특정 형식의 경우 메뉴 시스템에 의해 자동으로 포함되는 inc 파일에 정의되어 있습니다. 실행해야합니다.

module_load_include('inc', 'user', 'user.pages.inc') 

drupal_get_form을 호출하기 전에 양식 작성 함수를 호출하기 전에 Drupal에서 사용할 수 있는지 확인하십시오.

1
cam8001