차이점은 무엇이며 drupal_get_form()그리고 drupal_retrieve_form()? 누군가 차이점을 설명 할 수 있습니까? API를 보았지만 설명은 나와 비슷합니다.
차이점은 무엇이며 drupal_get_form()그리고 drupal_retrieve_form()? 누군가 차이점을 설명 할 수 있습니까? API를 보았지만 설명은 나와 비슷합니다.
답변:
차이점은 drupal_get_form()모듈에 대해 렌더링 된 HTML 양식을 자동으로 검색, 처리 및 표시하는 것을 처리하는 반면 drupal_retrieve_form()양식을 정의하는 구조화 된 배열을 반환한다는 것입니다.
drupal_get_form()먼저 form_get_cache ()를 사용하여 양식이 양식 캐시에 있는지 확인합니다 . 존재하지 않으면 drupal_retrieve_form () 및 drupal_prepare_form ()을 호출합니다 .
drupal_get_form()통화 drupal_process_form () 함수는, 그 통화 drupal_validate_form () , 및 호출하는으로 제출 핸들러 form_execute_handlers () .
렌더링은 form_builder ()drupal_process_form() 를 호출 하여 수행됩니다 .
대부분의 경우 drupal_get_form()다음 코드와 같이 사용할 함수입니다.
function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}
내가 drupal_retrieve_form()직접 찾은 유일한 모듈 은 mollom_moderate () 의 Mollom 모듈이며 , 자동으로 양식을 제출하는 데 사용합니다. 이 코드는 drupal_form_submit ()을 사용할 수 있지만 "프로그래밍 양식 제출은 기본 양식 제출 버튼 / 액션을 자동으로 사용할 수 없으므로 이와 유사해야합니다 drupal_form_submit()."
$form_id = $form_info['delete form'];
$form_state = form_state_defaults();
// We assume that all delete confirmation forms take the fully loaded
// entity as (only) argument.
$messages[] = "Attempt to load $form_info[entity] entity via entity_load().";
$entities = entity_load($data->entity, array($data->id));
$form_state['build_info']['args'][] = $entities[$data->id];
$form = drupal_retrieve_form($form_id, $form_state);
$form_state['values'] = array();
$form_state['values']['mollom']['feedback'] = '';
// Take over the primary submit button of confirm_form().
$form_state['values']['op'] = $form['actions']['submit']['#value'];
$form_state['input'] = $form_state['values'];
$form_state['programmed'] = TRUE;
// Programmed forms are always submitted.
$form_state['submitted'] = TRUE;
// Reset form validation.
$form_state['must_validate'] = TRUE;
form_clear_error();
drupal_prepare_form($form_id, $form, $form_state);
drupal_process_form($form_id, $form, $form_state);
$result = $form_state['executed'];
drupal_retrieve_form()코드$form_state가 참조로 전달 된 업데이트 된 코드에 액세스 할 수 있지만 상태가 아닌을drupal_get_form()반환한다는 것$form입니다.