¿Cuál es la diferencia entre drupal_get_form()y drupal_retrieve_form()? ¿Alguien puede explicar la diferencia? Miro la API, pero la descripción me parece similar.
10
¿Cuál es la diferencia entre drupal_get_form()y drupal_retrieve_form()? ¿Alguien puede explicar la diferencia? Miro la API, pero la descripción me parece similar.
drupal_retrieve_form()permite que su código acceda a la actualización a$form_statemedida que se pasa por referencia, sin embargo,drupal_get_form()solo devuelve el estado$form, no el estado.Respuestas:
La diferencia es que
drupal_get_form()maneja la recuperación, el procesamiento y la visualización automática de un formulario HTML representado para los módulos, mientras quedrupal_retrieve_form()devuelve la matriz estructurada que define un formulario.Recuperando el formulario
drupal_get_form()primero comprueba si el formulario está presente en el caché del formulario con form_get_cache () ; si no está presente, llama a drupal_retrieve_form () y drupal_prepare_form () .Procesando el formulario
drupal_get_form()llama a drupal_process_form () , que es la función que llama a drupal_validate_form () , y que invoca los manejadores de envío con form_execute_handlers () .Renderizando el formulario
La representación se realiza desde
drupal_process_form(), que llama a form_builder () .En la mayoría de los casos,
drupal_get_form()es la función a utilizar, como en el siguiente código.El único módulo que encontré que está llamando
drupal_retrieve_form()directamente es el módulo Mollom en mollom_moderate () , que lo usa para enviar automáticamente un formulario. El código podría usar drupal_form_submit () , pero (como dice un comentario), "los envíos de formularios programáticos no pueden usar automáticamente el botón / acción de envío del formulario principal, por lo que debemos asemejarnosdrupal_form_submit()".fuente