Jaka jest różnica między drupal_get_form()
i drupal_retrieve_form()
? Czy ktoś może wyjaśnić różnicę? Patrzę na interfejs API, ale opis wydaje się podobny do mnie.
10
Jaka jest różnica między drupal_get_form()
i drupal_retrieve_form()
? Czy ktoś może wyjaśnić różnicę? Patrzę na interfejs API, ale opis wydaje się podobny do mnie.
drupal_retrieve_form()
pozwalasz twojemu kodowi uzyskać dostęp do zaktualizowanego,$form_state
ponieważ jest przekazywany przez referencję, jednakdrupal_get_form()
po prostu zwróć$form
, a nie stan.Odpowiedzi:
Różnica polega na tym, że automatycznie
drupal_get_form()
obsługuje pobieranie, przetwarzanie i wyświetlanie renderowanego formularza HTML dla modułów, adrupal_retrieve_form()
zwraca tablicę strukturalną, która definiuje formularz.Pobieranie formularza
drupal_get_form()
najpierw sprawdza, czy formularz jest obecny w pamięci podręcznej formularza za pomocą form_get_cache () ; jeśli nie jest obecny, wywołuje drupal_retrieve_form () i drupal_prepare_form () .Przetwarzanie formularza
drupal_get_form()
wywołuje drupal_process_form () , która jest funkcją wywołującą drupal_validate_form () i która wywołuje procedury obsługi przesyłania za pomocą form_execute_handlers () .Renderowanie formularza
Renderowanie odbywa się z
drupal_process_form()
, który wywołuje form_builder () .W większości przypadków
drupal_get_form()
należy użyć funkcji, na przykład w poniższym kodzie.Jedynym modułem, który znalazłem, który wywołuje
drupal_retrieve_form()
bezpośrednio, jest moduł Mollom w mollom_moderate () , który używa go do automatycznego przesyłania formularza. Kod może używać drupal_form_submit () , ale (jak mówi komentarz): „Programowe przesyłanie formularzy nie jest w stanie automatycznie używać przycisku / akcji przesyłania formularza podstawowego, więc musimy przypominaćdrupal_form_submit()
”.źródło